2026年阿里技术主管面试秘籍与答案详解.docxVIP

  • 0
  • 0
  • 约6.34千字
  • 约 21页
  • 2026-02-10 发布于福建
  • 举报

2026年阿里技术主管面试秘籍与答案详解.docx

第PAGE页共NUMPAGES页

2026年阿里技术主管面试秘籍与答案详解

一、编程基础与算法设计(共5题,每题10分,总分50分)

1.题目:

实现一个函数,输入一个正整数n,返回一个列表,其中包含从1到n的所有“快乐数”。快乐数的定义是:对于一个正整数,将其每个位上的数字平方和,重复此过程,若最终结果为1,则该数为快乐数。例如,19是一个快乐数,因为:

12+92=82

82+22=68

62+82=100

12+02+02=1

答案与解析:

python

defis_happy(n):

seen=set()

whilen!=1andnnotinseen:

seen.add(n)

n=sum(int(digit)2fordigitinstr(n))

returnn==1

defhappy_numbers(n):

return[iforiinrange(1,n+1)ifis_happy(i)]

解析:

-使用集合`seen`记录已访问的数字,防止无限循环。

-若n最终变为1,则返回True,否则为非快乐数。

-`happy_numbers`函数生成1到n的所有快乐数,通过列表推导式筛选。

2.题目:

给定一个字符串`s`,找到其中最长的无重复字符的子串长度。例如,输入abcabcbb,输出3(对应abc)。

答案与解析:

python

deflength_of_longest_substring(s):

char_map={}

left=0

max_len=0

forright,charinenumerate(s):

ifcharinchar_map:

left=max(left,char_map[char]+1)

char_map[char]=right

max_len=max(max_len,right-left+1)

returnmax_len

解析:

-使用滑动窗口技术,`left`和`right`表示当前窗口的左右边界。

-`char_map`记录字符最后出现的位置。若字符重复,则将`left`移动到重复字符的下一个位置。

-逐步更新最大长度`max_len`。

3.题目:

实现一个函数,输入一个链表,返回其反转后的链表。例如,输入1→2→3→NULL,输出3→2→1→NULL。

答案与解析:

python

classListNode:

def__init__(self,val=0,next=None):

self.val=val

self.next=next

defreverse_list(head):

prev=None

current=head

whilecurrent:

next_node=current.next

current.next=prev

prev=current

current=next_node

returnprev

解析:

-使用三个指针:`prev`(初始为None),`current`(头节点),`next_node`(临时存储下一个节点)。

-逐个反转节点指向,最后`prev`成为新的头节点。

4.题目:

给定一个包含n个整数的数组,返回所有和为target的三个数的组合。例如,输入[2,7,11,15],target=9,输出[[2,7]]。

答案与解析:

python

defthree_sum(nums,target):

nums.sort()

result=[]

foriinrange(len(nums)-2):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,len(nums)-1

whileleftright:

total=nums[i]+nums[left]+nums[right]

iftotal==target:

result.append([nums[i],nums[left],nums[right]])

whileleftrightandnums[left]==nums[left+1]:

left+=1

whileleftrightandnums[right]==nums[right-1]:

right-=1

left+=1

right-=1

eliftotaltarget:

left+=1

else:

right-=1

return

文档评论(0)

1亿VIP精品文档

相关文档