在你阅读之前,先插播个小广告,博主有一个面经专栏,全部都是2024秋招准备的内容,相比于网络上其他的面经,有着面试的所有过程,还有最全的面试答案,不需要再到处找,如果你想获得大厂的offer,认真准备面经是必不可少的,专栏会持续更新至少100篇内容,现在已经更新10+内容了,如果想学习所有的面经,欢迎订阅博主的专栏呀,保证每一篇都是匠心独创,绝对物超所值,下面就开始学习吧~
目录
1.八股
- 有几种网络io模型?
- 异步网络模型在什么场景下你了解有应用过?(回答了线程相关的场景)
- 除了用线程完成,还有什么操作可以完成异步操作?
- 同步阻塞和同步非阻塞在java层面怎么实现?(说前面网络io模型答得挺顺畅,具体实现细节还需要提升一下)
- 描述一下一次完整的http请求
- 知道的长连接有几种实现方式?
- 一个http请求包含哪几部分内容?
- 请求头里面的信息都有哪些?
- http的状态码有哪些?
- 401和403的区别是什么?
- 500和502 呢?
- Java中创建线程的方式有几种?
- 用继承thread类和实现runnable接口的理解和区别?
- Java里面的几种集合框架尽可能地描述清楚一点
2.代码题
- 设计一个hashSet(完全不会)
- 多线程题:10个线程,每个线程加1w次,最终让long类型的num实现加到10w(不会)
3.场景题
- 1t的数据怎么加载到200m的内存中,并且找到两行一样的数据?
答了布隆过滤,然后问重点怎么加载到内存中
- 用几次io加载到内存当中?怎么加载?
- Java打开1t的文件,第一部操作做什么?
- 用代码打开一个文件和用鼠标打开一个文件有什么区别?
4.八股文答案
- 有几种网络io模型?
同步阻塞,同步非阻塞,异步IO,IO多路复用
举个简单的例子方便大家理解,假设我们在超时里买东西,阻塞和非阻塞区别在于我们结账的时候是排队等待,还是在等待的时候还做其他的事情,阻塞就是我们只能排队等着,非阻塞就是指我们在排队的时候还能玩手机,同步和异步则是收银员是要一直等待机器出信息还是说在等待机器出结账信息的时候能做别的事情。
同步阻塞 | 同步非阻塞 | IO多路复用 | 异步IO | |
优点 | 程序开发简单;在阻塞等待数据期间,用户线程挂起,不占用CPU资源 | 内核缓冲区没有数据的情况下,发起的系统调用不会阻塞,用户程序不会阻塞,实时性较好 | select/epoll可以同时处理成百上千的连接,与之前的一个线程维护一个连接相比,IO多路复用则不需要创建线程,也就不需要维护,从而减少系统开销 | 在内核等待数据和复制数据 |