互联网公司面试流程及常见问题解答.docxVIP

  • 0
  • 0
  • 约9千字
  • 约 26页
  • 2026-02-02 发布于福建
  • 举报

互联网公司面试流程及常见问题解答.docx

第PAGE页共NUMPAGES页

2026年互联网公司面试流程及常见问题解答

一、编程能力测试(15题,共75分)

题型说明:本部分考察编程基础、算法设计及代码实现能力。题目涵盖数据结构、算法、系统设计基础,要求在限定时间内完成代码编写和逻辑说明。

1.数组反转(5分)

题目:输入一个整数数组,原地反转数组元素,要求不使用额外数组空间。

示例:输入`[1,2,3,4,5]`,输出`[5,4,3,2,1]`。

答案:

python

defreverse_array(arr):

left,right=0,len(arr)-1

whileleftright:

arr[left],arr[right]=arr[right],arr[left]

left+=1

right-=1

returnarr

解析:双指针法,从数组两端向中间交换元素,时间复杂度O(n),空间复杂度O(1)。

2.二分查找(5分)

题目:在一个有序数组中查找目标值,如果存在返回索引,否则返回`-1`。要求实现递归和非递归两种方式。

示例:数组`[1,2,4,5,6]`,目标值`5`,返回`3`。

答案:

python

递归

defbinary_search_recursive(arr,left,right,target):

ifleftright:

return-1

mid=left+(right-left)//2

ifarr[mid]==target:

returnmid

elifarr[mid]target:

returnbinary_search_recursive(arr,left,mid-1,target)

else:

returnbinary_search_recursive(arr,mid+1,right,target)

非递归

defbinary_search_iterative(arr,target):

left,right=0,len(arr)-1

whileleft=right:

mid=left+(right-left)//2

ifarr[mid]==target:

returnmid

elifarr[mid]target:

right=mid-1

else:

left=mid+1

return-1

解析:利用有序数组特性,每次排除一半元素,时间复杂度O(logn),非递归方式更符合实际应用。

3.字符串去重(5分)

题目:输入一个字符串,去除重复字符并保持顺序,返回新字符串。

示例:输入`abaccdeef`,输出`abcdef`。

答案:

python

defremove_duplicates(s):

seen=set()

result=[]

forcharins:

ifcharnotinseen:

seen.add(char)

result.append(char)

return.join(result)

解析:使用集合记录已见字符,列表存储结果,时间复杂度O(n),空间复杂度O(n)。

4.链表反转(5分)

题目:反转单链表,返回新头节点。

示例:输入`1-2-3-None`,输出`3-2-1-None`。

答案:

python

classListNode:

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

self.val=val

self.next=next

defreverse_linked_list(head):

prev,curr=None,head

whilecurr:

next_node=curr.next

curr.next=prev

prev=curr

curr=next_node

returnprev

解析:三指针法,每次翻转当前节点的next指针,时间复杂度O(n),空间复杂度O(1)。

5.合并有序链表(5分)

题目:给定两个有序链表,合并为一个新的有序链表。

示例:链表1`1-4-5`,链表2`1-3-4`,输出`1-1-3-4-4-5`。

答案:

python

defmerge_two_lists(l1,l2):

dummy=ListNode(0)

current=dummy

whilel1andl2:

ifl1.vall2.val:

c

文档评论(0)

1亿VIP精品文档

相关文档