保姆级教程:手把手带你整理Java面试笔记
勾哥:昨天讲了 TCP,又有人跟我说,你这个知识点讲清楚了,题目这么多,你能挨个讲么?大佬们,我要一道题一道题地解,明年一整年不用干别的了【球球了,在线卑微.gif】
还是那句话,网上面试题资料真不少,关键看你怎么整理。再借着微博大佬的光,从关于「计算机基础和Java语言特性」来给大家说说,面试准备的时候,你需要把笔记准备出几个层次?大家也可以参考这个思路,整理其他题目。
首先,你必须要弄明白,面试官究竟想考啥
作为从面试官角度出发,跟大家说说,对于计算机基础和 Java 语言特性的考察点。
第一考察点就是对基本概念和基本原理的考察
要求:这是最基本的,对这两项的理解必须是正确的,清晰的
举例:
网络协议的 4/7 层模型的概念
TCP 协议流量控制的实现原理
第二个考察点是常用工具、模型的实现方式和使用姿势
举例:
HashMap 在 JDK 1.8 中的实现方式是怎样的?
单例模式有几种实现方式?
什么场景下该使用懒汉式单例实现,什么场景下该使用饿汉式单例实现?
第三个考察点是经常使用到的其他知识点
举例:你常用的 Linux 命令有哪些,都用来解决什么问题?
第四个考察点是实际应用中容易犯错的点
要求:主要考察候选人对于不同对象引用方式的作用和理解
举例:
== 与 equals 的区别
对象的强引用使用不当可能导致内存泄露
第五个考察点是与面试方向相关的知识点:
如果面试的岗位是中间件研发,面试时可能会涉及更多的存储、网络相关的知识的考察
然后,你还要搞清楚,如何在一众竞争者中脱颖而出
前面提到的考察点是面试通过的必要条件,回答出问题并不一定能保证通过面试,所以如何做到比其他竞争者更优秀,给面试官留下更好的印象,是成功的关键。你需要一些 buff
1. 能将面试考察点与实际业务场景结合,或者与实际使用经验结合
好处:更好地体现对知识点的理解,突出实践能力
举例:
在回答 “你知道哪几种设计模式” 这个问题时,不但能说出几种设计模式,以及适合哪类场景,而且还能指出哪些著名的框架在处理什么问题时使用了哪种设计模式,或者你自己在处理某个项目的什么场景时,使用了哪种设计模式,取得了什么效果,这样肯定会给面试官留下非常好的印象。
2. 用反例来描述在实际场景中,误用某些功能会带来的问题
举例:
介绍反射机制时,除了介绍反射机制的实现方式、应用场景外,还可以提到大量使用反射会对性能产生影响,应避免滥用。
3. 知道与考察知识点相关的优化点
举例:
在介绍 TCP 建连与断连时,最好能够指出线上如果出现大量 time_wait 时,可以通过调整系统参数加快连接的回收与复用。
4. 了解与知识点相关的最新技术趋势
举例:
介绍 ConcurrentHashMap 的实现时,能够知道 1.8 版本的改进细节。或者在介绍 HTTP 时能够说出 HTTP2 和 QUIC 的特点与实现等。
5. 回答面试问题时,在比较了解的前提下,尽量增加回答内容的深度
举例:
在介绍 TCP 的滑动窗口时,能讲到流量和拥塞控制,近一步能指出不同的解决拥塞的算法等。
注意!面试官一般会沿着候选人的回答继续追问,如果对细节不太了解可能会适得其反。
面试准备,你肯定还得要练一练真题
给你筛选了几个高频真题,解题思路如下。
第一题:进程与线程的区别与联系。
线程、进程的区别和联系,主要从资源占用、切换效率、通信方式等方面进行解答
第二题:请你简单介绍一下进程的切换过程。
线程的切换过程主要考察上下文切换,需要保存寄存器、栈等现场,需要由用户态切换到内核态。最后通过 vmstat 命令查看上下文切换的情况
第三题:你经常使用哪些 Linux 命令,主要用来解决什么问题?
常用的 Linux 命令可以参考前面操作系统汇总提到的命令
第四题:为什么 TCP 建连需要 3 次握手,而断连需要 4 次?
见上篇文章
第五题:为什么 TCP 关闭连接时需要 TIME_WAIT 状态,为什么要等 2MSL?
也见上篇文章 已经说的很清楚了,真还是不懂就私勾哥吧
第六题:一次完整的 HTTP 请求过程是怎样的?
大致包括 DNS 解析、TCP 建连、HTTP 请求、HTTP 响应等,实际回答时,可以画个简单的交互图来说明
推荐阅读: