职位类型:技术类
面试地点:北京
招聘公司:北京小米科技有限责任公司
技术岗位面试也少不了技术题目,其他面试内容我就不说了,只把印象比较深的几道技术面题目跟大家分享一下吧~
1.一个二维数组
3 8 10 13
15 17 22 25
23 26 29 31
27 30 33 34
尽可能快的找到一个数m,比如m=27
我的回答是根据数组特点设计查找算法,主要是减少元素的遍历。
2.一个手机键盘主要用到1234567890*这11个按键,要求实现输入任意数字,返回它的中文表述,*号作为退位键,比如输入134,应返回“一百三十四”,输入1500110,应返回“一百五十万零一百一十”,要求中文表述结构应尽量合理,同时动态显示变化,比如刚才的1500110,在输入*,即1500110*,应返回“十五万零十一。
3.N层的台阶有两种走法,一次一步或两步,请问一共有多少中走法,递归和非递归两种方法都需要。
4.找出两个单向链表的相同元素(无序)。
5.现有一张很大的域名列表,可以包含几百万条记录,其中包含重复项,有以下几个问题:
a)设计结构
b)实现去重。
c)排序
d)插入某一项(可能和表中数据重复)
e)内存不够大,如何保证访问效率
f)如何设计cache的策略
g)如何处理脏数据,例如硬盘上的数据被修改,而cache中数据还是旧的,但其实他们指向同一个IP地址。
剩下都是些回答过程中延伸出来的一些小问题。还有一些数据结构的问题,比如红黑树。
这些题目都是考官现想现问的,总体来说难度都不是很大。不过其中也有陷阱,比如我就被最后一个脏数据的坑了,所以大家还是要认真一些哈~