小米秋招软件开发(java方向)面经
一面
- 自我介绍。
- 谈项目,讲讲OAuth2.0协议是什么,为什么要用到OAuth,OAuth2.0流程。
- 谈谈mysql存储引擎,索引,辅索引底层结构。
- 讲讲redis里面string的底层是怎么实现的。
- 给定一个ip地址比如221.130.111.109/30,指出这个IP地址的网络号,主机号,以及子网数。这个地址属于那一类ip地址(A,B,C)类。
- 讲讲TCP三次握手的具体流程。
- 老问题,一个页面从输入URL到页面加载显示完成,这个过程都发生什么?
- 如果上面的是基于HTTPS的请求,会增加哪些流程呢(即HTTPS请求的流程)。HTTPS里面的对称加密的密钥是怎么发送的,能用RSA的私钥加密比它大的数据吗?
- 手撕代码1: 输入两个链表,每个链表代表一个数,对这两个链表进行加法运算,输出的和也是一个链表形式,比如1->2->3->4, 2->3->7,对这两个链表进行加操作,1234+237=1471,输出1->4->7->1。
- 手撕代码2: 镜像二叉树,递归非递归。
可能还有一些小问题,但是记不太清楚了,一面结束之后大概等了10分钟不到就被叫到二面了。总之一面的面试官还是非常nice的
二面
- 什么是mybatis的一级缓存和二级缓存,区别?
- 如何实现缓存与DB的一致性?
- redis有哪些数据结构,redis的持久化机制,redis的有事务吗,怎么实现的。
- 发生缓存击穿或者缓存穿透的情况该怎么解决。
- java容器类的层次结构,分别讲一下各种容器的原理,LinkedList的删除操作怎么实现;TreeSet的add操作怎么实现的,详细一点;HashTable怎么实现线程安全;LinkedHashMap实现机制,如何保证添加元素的有序性。
- LRU是什么,如何实现一个LRU缓存。
- 手撕快排,前后序遍历非递归,求一个二叉树的高度。
- 根据前序和后序遍历之后的两个字符串,求后序遍历
- linux命令,你用过哪些。
- 分布式锁有哪些实现方式,大概讲讲怎么实现的分布式锁(ZooKeeper的实现版不记得了)。
- 讲讲redis哨兵机制
- redis集群中如何知道某个节点挂了,心跳机制;怎么去实现心跳机制。
连续两面技术面,每一面虽然问的都不是特别难,但是都持续一个小时左右,我是下午2点开始面的到5点才面完,面完真是感觉,“哎呀妈呀,脑瓜疼”。
二面结束之后hr小姐姐通知,面试通过。然后等了20分钟左右,和hr开始聊天,问了我意向城市,确定是南京吗;问了我有没有offer,然后给了一个报价,然后说让我考虑一下,最后就结束了。
#面经##小米##秋招##Java工程师#