小米内推服务端工程师暑期实习一面面经
4月10号下午接到了小米一面的电话,有点意外,当时没怎么准备,下午也是迷糊糊的,同时面试官那边很吵,说话声音又很小,一开始说是小米公司,我硬生生问了两次才听出来,然后找了间教室面试。期间我让面试官多次重复问题,因为声音真的很小,那边真的很嘈杂,同时这是我面试以来最干净利落的一次,40多分钟,问了无数个问题,我不会就过,然后问下一个,面试官很耿直,我答错了就跟我说错,再想想,所以综合下来感觉一般,甚至觉得这一次的面试,比阿里前三面的技术面的问题还要多,问题如下:
-
自我介绍
-
集合熟悉吗?我说还行,用的挺多
-
讲一下ArrayList和Linkedlist的区别
-
ArrayList扩容原理,这个我没讲出来,他说我说的是HashMap不是数组
-
hashmap熟悉吗?我说熟悉,然后他又问我ConcurrentHashMap熟悉吗?然后我就讲了锁分段技术,问我看过源码吗?我说没有,然后跟我说,那你讲一下hashmap,这个我看过源码就讲了,然后他问我扩容,我不是特别清楚,就简单的讲了讲,他也没有为难我
-
-
数据库
-
MySQL熟悉吗?我说,还行,一直在用,讲一下索引,我就讲了基础的,使用B树实现的,具体的不清楚,然后我讲索引的好处和坏处,然后他问我使用过索引吗?我说使用过,但是我的数据库数据只有几千条,我自己测试过,感觉相差不大,然后他也没再问
-
Join知道吗?我说知道,也用过,我就讲了join,left join,right join,可能没讲清楚,他提了一个问题,问我表A有N条数据,表B有M条数据,相同的数据有10条,问左右连接数据各是几条
-
然后问我知道NoSQL数据库吗?我说知道Redis是key/value只是用过,但是不多,还是基于文档的等等,但也不熟,比较熟悉的是图数据库,比如neo4j,但是他好像不了解,就没再问
-
-
设计模式
-
我说最熟悉的是适配器模式,然后我讲了一下使用,我说没有完整学习过设计模式,都是用到什么才用什么?他应该不满意,然后问还有什么?
-
然后我说知道单例设计模式,动态***,工厂模式
-
然后让我讲讲单例设计模式,我说有懒汉式和饿汉式,他说讲一下区别,我说一个线程安全,一个线程不安全?但是有双重校验锁,他也没问线程,只是让我口述懒汉式和饿汉式,还强调就相当于读出来代码。
-
-
算法
-
判断一个链表是否有环
-
两个有序链表的拼接
-
假设电脑内存4kb,然后有10G的数据,怎么排序?最后一个扯了好久,他一直说我的不对,复杂度太高,我最后只能说,那我不知道了,他就放弃了
-
-
最后,说他要开会了,今天就这样,然后结束了,感觉GG,就当攒面经了
#内推##实习##Java工程师##小米#