互联网公司面试全攻略及答案解析.docxVIP

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

第PAGE页共NUMPAGES页

2026年互联网公司面试全攻略及答案解析

一、编程能力测试(共5题,每题10分)

1.题目:

编写一个函数,输入一个字符串,返回该字符串中所有唯一字符的列表(不区分大小写)。例如,输入`HelloWorld`,输出`[H,e,l,o,W,r,d]`。

答案:

python

defunique_chars(s):

s=s.lower()

unique=[]

forcharins:

ifs.count(char)==1:

unique.append(char)

returnunique

解析:

-首先将字符串转为小写,确保不区分大小写。

-遍历字符串,使用`count`方法统计每个字符的出现次数。

-如果字符出现次数为1,则加入结果列表。

-时间复杂度为O(n2),因`count`方法会重复遍历字符串。可优化为O(n):

python

defunique_chars_optimized(s):

s=s.lower()

seen=set()

unique=[]

forcharins:

ifcharnotinseen:

seen.add(char)

unique.append(char)

returnunique

2.题目:

实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为3,输入`[LRUCache,put,put,get,put,get,put,get,get]`,`[[3],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[2]]`,输出`[None,None,None,1,None,-1,None,-1,2]`。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)=self.capacity:

oldest=self.order.pop(0)

delself.cache[oldest]

self.cache[key]=value

self.order.append(key)

解析:

-使用字典`cache`存储键值对,列表`order`记录访问顺序。

-`get`操作:若键存在,移动到列表末尾(表示最近使用),返回值;否则返回-1。

-`put`操作:若键已存在,更新值并移动到末尾;若缓存已满,删除最久未使用的键(列表开头),然后插入新键。

-时间复杂度为O(1)。

3.题目:

给定一个二叉树,判断其是否为平衡二叉树(左右子树高度差不超过1)。例如:

3

/\

920

/\

157

输出`True`。

答案:

python

classTreeNode:

def__init__(self,val=0,left=None,right=None):

self.val=val

self.left=left

self.right=right

defis_balanced(root:TreeNode)-bool:

defcheck(node):

ifnotnode:

return0,True

left_height,left_balanced=check(node.left)

right_height,right_balanced=check(node.right)

returnmax(left_height,right_height)+1,left_balancedandright_balancedandabs(left_height-right_height)=1

returncheck(root)[1]

解析:

-使用递归计算每个节点的高度,同时判断左右子树是否平衡。

-若任意子树不平衡或高度差超过1,则整棵树不平衡。

-

文档评论(0)

1亿VIP精品文档

相关文档