小米提前批java面经

一面(60min)

开篇吐槽:面试官看起来有点老,肯定30+,而且发际线很高,面试过程中大部分我只能从摄像头看到他亮亮的额头,全程也没什么表情,让人感觉有点窒息。这场面试是八股文拉满,是我历史上八股文问的最多的一场了,基本上涵盖了我学习过的大部分都问到了,全程一问一答,根据视频,我推测面试官也是去找的八股文问的,不管回答的怎么样,面试官都不表态,无表情。

1.自我介绍

2.问实习

  • 因为时间短,就没具体问实习相关的事情了

3.问我现在其他公司进度如何,有没有offer的?

4.问项目

  • 介绍下个人云盘?
  • 断点续传具体介绍下?
  • 服务端如何校验数据完整性?(一直在乱扯,没get到点,后面意识到了想问的是文件上传后是否是没问题的,立马答用MD5)

5.TCP

  • TCP网络模型?(开始以为问的是TCP状态机,心里想这么搞人的?后面意识到他想问TCP/IP网络体系架构)
  • TCP三次握手?
  • 两次握手可以?

6.HTTP

  • HTTP状态码介绍下(2xx,3xx,4xx,5xx介绍了下,每个举例了几个知道的)
  • HTTPS说下?
  • HTTPS什么时候用的对称加密?什么时候非对称加密?(介绍完,说了下HTTPS握手)
  • CA证书在哪里用到了?怎么用的?具体是如何验证合法性?
  • cookie和session的区别?
  • 浏览器关闭后session还在?session的生命周期?(服务器这边存储,服务器会决定多长周期有效)

7.快排

  • 快排原理?(老八股文了)
  • 稳定还是非稳定?(非稳定)
  • 如何实现成稳定?(加一个字段,记录两个元素之间的相对关系)
  • 快排优化?(选主元,数据小用插入排序)

8.最小堆和最大堆

  • 最小堆和最大堆聊下?
  • 使用场景?

9.二叉树

  • 二叉树的遍历有哪几种?(前中后层序)
  • 介绍下每种遍历的原理?

10.广度优先和深度优先说下?

11.MySQL

  • MySQL索引底层原理?(B+Tree,并且抢答了为什么使用B+Tree不用其他数据结构)
  • 非聚簇索引和聚簇索引?
  • 回表知道?介绍下?
  • 覆盖索引了解?(不了解)
  • 索引什么时候失效?
  • 悲观锁和乐观锁?
  • MySQL哪里用了悲观锁和乐观锁?(悲观锁扯读写锁、行锁表锁,乐观锁说MVCC)
  • MySQL怎么给语句加悲观锁?(语句加个for什么的...记不得了,没用过)

12.GC

  • 介绍下Java的GC的一些算法?(标记清除、标记整理、复制、分代)

13.HashMap

  • 介绍下HashMap底层原理?
  • 为什么要有负载因子呢?(哈希表希望均摊O(1),负载因子反映了空间使用率)
  • 为什么2倍扩容?(目的是均匀分布,具体介绍了下具体是怎么做的)

14.springboot启动过程?(口干舌燥,直接说不知道)

15.负载均衡了解?(只知道概念,Ngix有用)

16.进程调度算法?(先进先出、短作业优先、高响应优先)

17.进程和线程的区别?

18.线程怎么执行的,他能独立执行?

19.协程了解?说下?

20.go的协程调度机制?(GMP模型,前两天看的,不是很明白,简单说了下...生怕深入问)

21.协程为什么比线程效率高?

22.进程间通信方式?

23.了解微服务?(不了解)

24.做个题把(终于可以休息了,输出了快1小时)

  • 合并有序链表(我看到题目后还很认真的靠近确认了下是那个简单的合并链表题嘛,假装思考下(休息下)立马秒杀了)
  • 写完后给面试官说了下思路

25.你有什么想问的?

  • 你们那边具体做什么的?
  • 对我评价下?哪里觉得不太好?(整体觉得挺好的,希望有些东西不能够局限,让我不仅学理论,还要多实践,意思是让我去学学微服务、中间件那些)

二面(30min)

二面面试官发际线也没那么高了,也有表情了,八股文也少多了,能聊聊天了。

1.自我介绍

2.进程和线程

  • 进程和线程区别?
  • 线程哪里比进程开销小?(来者不善,还深入问,遇到高手了啊....)
  • 说下什么时候会有系统调用?(乱扯,中断、用户态到内核态)
  • 带缓冲的IO通过什么方式减少系统调用?(缓冲区,一次调用能够拷贝多次)
  • 进程间通信方式?我们如果遇到一个场景,如何选择呢?你是不是没用过?(乱扯,最后说我确实没怎么用过)
  • 说下select、poll、epoll?
  • 那这样说我们都选epoll就行了吧?要什么select啊?(不知道,我记得有人说了是长连接短链接的问题,但是我不懂,最后面试官说是平台限制,不是所有os都有epoll,内心:就这?)

3.问下数据结构算法吧

  • 哈希表解决冲突方法?
  • 拉链法如果太长怎么解决?(平衡树、扩容)
  • 说说跳表?跳表缺点?(缺点就饶了我吧,乱扯)

4.给定了一个场景,设计一个数据结构

  • 如web开发输入一个url,最终会定位到一个方法上去,假如有通配符呢?如*/abc/*?(开始扯tire树,让我介绍了tire树和缺点,内心:咋又是缺点啊?)
  • 最后面试官揭晓答案是AC自动机,还给我简单介绍了下AC自动机原理(这个知识点是和树状数组、线段树平级的,饶了我吧)

4.问实习业务说下?(面试官感觉不耐烦了,感觉凉了啊)

  • 说了下业务做的什么
  • 继续问我这个业务的表是怎么设计的?(这我咋能知道,我就查了几次数据库,硬扯业务具体流程)

5.写个代码吧(感觉面试官无奈的很...想提早结束)

  • 给定一个由*和其他字符组成的字符串,将非*字符移动到字符串的最右边,相对位置不能变,空间O(1)。
  • 如样例:输入********a****b***c***d,输出******************abcd
  • 很快想到了双指针,立马开码,1分钟多写完了,调了2分钟过了。

6.反问

  • 具体的业务做什么的?
  • 对我评价下?(面试官觉得还可以,说你才大三嘛)

不算hr面的hr面(5min)

大概是打电话给我说了下通过了,介绍了下base,问其他公司面试情况?什么时候能出来实习?9月下谈薪,问了一下学校三方多久出来,还问我有什么反问的。

反问:待遇方面的(hr那边要开会,就快速结束了)

 

你可能感兴趣的:(java,开发语言,面试,秋招,职场和发展)