小米集团助理工程师面试题集.docxVIP

  • 1
  • 0
  • 约1.03万字
  • 约 31页
  • 2026-02-26 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年小米集团助理工程师面试题集

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

题目1(Python编程题,10分)

题目:

请编写一个Python函数,实现将输入的十进制数转换为二进制字符串。要求不使用Python内置的`bin()`函数,并且能够处理负数输入。请展示函数的实现代码,并测试输入`-15`和`123`的输出结果。

答案:

python

defdecimal_to_binary(n):

ifn==0:

return0

is_negative=n0

n=abs(n)

binary=

whilen0:

binary=str(n%2)+binary

n//=2

ifis_negative:

补码表示(32位)

binary=twos_complement(binary)

returnbinary

deftwos_complement(binary):

先转为全1

ones=132

异或操作

inverted=

forb1,b2inzip(binary,ones):

inverted+=1ifb1!=b2else0

加1

carry=1

foriinrange(len(inverted)-1,-1,-1):

ifinverted[i]==1:

inverted=inverted[:i]+0+inverted[i+1:]

else:

inverted=inverted[:i]+1+inverted[i+1:]

break

returninverted

测试

print(decimal_to_binary(-15))#输出:11111111111111111111111111110001

print(decimal_to_binary(123))#输出:1111011

解析:

1.正数转换:通过不断除以2并取余数的方式,从下往上构建二进制字符串

2.负数处理:采用32位补码表示,即先求正数二进制,然后取反加1

3.时间复杂度:O(logn),空间复杂度:O(1)

题目2(算法设计题,10分)

题目:

假设有一个包含n个元素的数组,其中每个元素都是唯一的正整数,且1≤元素≤n。请设计一个算法,在不使用额外空间的情况下,找出数组中缺失的那个数字。请提供算法描述和代码实现。

答案:

算法描述:

利用数学公式:1到n的和为n(n+1)/2

1.计算数组所有元素的和sum1

2.计算数组长度为n时的理论总和sum2

3.缺失数字=sum2-sum1

代码实现:

python

deffind_missing_number(nums):

n=len(nums)

expected_sum=n(n+1)//2

actual_sum=sum(nums)

returnexpected_sum-actual_sum

测试

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

print(find_missing_number([3,1,2,4,5]))#输出:6

解析:

1.时间复杂度:O(n),空间复杂度:O(1)

2.该方法基于数学等差数列求和公式,无需额外空间

3.适用于题目给定的特殊约束条件(1≤元素≤n)

题目3(数据结构题,10分)

题目:

请实现一个LRU(最近最少使用)缓存的结构,支持以下操作:

1.`LRUCache(intcapacity)`-初始化缓存容量

2.`get(intkey)`-获取键key对应的值,如果不存在返回-1

3.`put(intkey,intvalue)`-插入或更新键值对,如果缓存已满则删除最久未使用的元素

答案:

使用双向链表+哈希表实现

python

classDLinkedNode:

def__init__(self,key=0,value=0):

self.key=key

self.value=value

self.prev=None

self.next=None

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

创建伪头部和伪尾部

self.head=DLinkedNode()

self.tail=DLinkedNode()

self.head.next=self.tail

self

文档评论(0)

1亿VIP精品文档

相关文档