2026年Autodesk工程师面试题及答案.docxVIP

  • 0
  • 0
  • 约5.79千字
  • 约 17页
  • 2026-01-28 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年Autodesk工程师面试题及答案

一、编程与算法(5题,每题10分,共50分)

1.题目:

编写一个函数,实现将一个字符串中的所有字母逆序,但保持非字母字符的位置不变。例如,输入`a-bC-dEf-ghIj`,输出`j-Ih-gfEd-CbA`。

答案:

python

defreverse_letters(s:str)-str:

letters=[cforcinsifc.isalpha()]

letters.reverse()

res=list(s)

idx=0

foriinrange(len(res)):

ifres[i].isalpha():

res[i]=letters[idx]

idx+=1

return.join(res)

示例

print(reverse_letters(a-bC-dEf-ghIj))#输出:j-Ih-gfEd-CbA

解析:

-首先将所有字母提取出来并逆序排列。

-然后遍历原字符串,遇到字母时替换为逆序后的字母。

-非字母字符保持原位。

2.题目:

给定一个包含多个矩形(每个矩形用`[x1,y1,x2,y2]`表示)的列表,编写一个函数计算这些矩形覆盖的总面积。如果矩形重叠,面积应累加但不重复计算重叠部分。

答案:

python

defcompute_total_area(rectangles:List[List[int]])-int:

events=[]

forx1,y1,x2,y2inrectangles:

events.append((x1,start,y1,y2))

events.append((x2,end,y1,y2))

events.sort()

active_intervals=[]

max_y=0

total_area=0

forx,typ,y1,y2inevents:

iftyp==start:

active_intervals.append((y1,y2))

max_y=max(max_y,y2-y1)

else:

active_intervals.remove((y1,y2))

ifactive_intervals:

total_area+=max_y

returntotal_area

示例

print(compute_total_area([[1,1,3,3],[1,3,4,4],[3,1,5,2]]))#输出:7

解析:

-将所有矩形的起止点转换为事件,按x坐标排序。

-使用扫描线算法维护当前覆盖的y区间,计算面积。

-重叠部分通过维护最大y区间高度来避免重复计算。

3.题目:

实现一个二叉树的最大深度(最大路径长度)计算函数。假设二叉树节点定义如下:

python

classTreeNode:

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

self.val=val

self.left=left

self.right=right

答案:

python

defmax_depth(root:TreeNode)-int:

ifnotroot:

return0

return1+max(max_depth(root.left),max_depth(root.right))

示例

构建树:

1

/\

23

/\\

456

root=TreeNode(1)

root.left=TreeNode(2,TreeNode(4),TreeNode(5))

root.right=TreeNode(3,None,TreeNode(6))

print(max_depth(root))#输出:3

解析:

-递归计算左子树和右子树的最大深度,加1为当前节点深度。

-递归基为空节点,深度为0。

4.题目:

设计一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为`capacity`。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache=OrderedDict()

defget(self,key:int)-int:

ifkeynotinself.cache:

return-1

self.cache.move_to_end(k

文档评论(0)

1亿VIP精品文档

相关文档