程序员/后端开发方向Java 跳槽注意事项(简历和面试经验分享)
应届生面试经验参考:https://www.cnblogs.com/rainbow-1/p/16779048.html
简历:
1、个人感觉还是要写真话,包装的内容要有一定的基础,问起来能够对答几个回合。
2、基本信息最好直接写年龄,而不是出生年月。跳槽简历最好标明当前所在地和意向地,当前薪资和意向薪资,写明大概多久可以入职。
3、个人综述放在前面显眼的位置,写明自己最大的优势有哪些。
4、工作/项目经历可以合在一起,写明项目技术栈,自己负责的主要任务,着重举例强调自己在哪些工作细节上发挥了作用,可以简要地写一下这份工作带给自己的收获有哪些。
5、教育和证书资质等写在一起,证书可以写上编号。
6、技术栈一定要写自己熟悉的,哪怕是包装的内容也要能说个一二三出来,需要标明程度(了解,熟悉,掌握,熟练,精通)这将直接决定面试官问到什么程度。
7、如果git上有开源项目,可以简单写写,把访问链接挂上。
8、爱好等其他补充内容简单写写。
面试:
根据我面试的经历做以下总结,大家取舍参考。
首先面试官问的问题基本是按简历来的,所以简历上别给自己挖坑。应届面试(无工作经历),一般问起来知识(八股文)> 实践,如果是跳槽的面试,我个人感觉问项目比问知识层面的东西要多一些,所以面试前一定要好好理一理自己的工作,有哪些亮点可以讲给面试官听,最好能够结合理论知识来讲,比如用哪种设计模式实际解决了工作中的哪个实际场景,取得了怎样的效果。面试过程中最好多数对话不要让自己太被动,如果遇到知识盲区,或者是很难回答的问题,可以直白说自己不是很清楚,但是可以按自己的理解大概说一下,不要一句不会就结束了,这样会越来越被动。
后面分享一下个人感觉比较常问的问题(非大厂Java)
1、线程池的几个核心参数都有什么含义,举一个实际用过的场景。怎么确认核心线程池的核心线程参数大小?线程池处理任务的流程。
Runtime.getRuntime().availableProcessors(); 可以获取当前系统可用的处理器数量。
确定核心线程参数有两个判断依据:
一、CPU密集型任务
对于 CPU 密集型,多线程本质上是提升多核 CPU 的利用率,所以对于一个 8核CPU,每个核一个线程,理论上创建 8 个线程就够了。如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们设置的线程数量是 CPU 核心数的 2 倍,因为计算任务非常重,会占用大量的 CPU 资源,所以这时 CPU 的每个核心工作基本都是满负荷的,而我们又设置了过多的线程,每个线程都想去利用 CPU 资源来执行自己的任务,这就会造成不必要的上下文切换,此时线程数的增多并没有让性能提升,反而由于线程数量过多会导致性能下降。因此,对于 CPU 密集型的计算场景,理论上线程的数量 = CPU 核数就是最合适的,不过通常把线程的数量设置为CPU 核数 +1,会实现最优的利用率。
二、IO密集型任务
IO 密集型任务最大线程数一般会大于 CPU 核心数很多倍,因为 IO 读写速度相比于 CPU 的速度而言是比较慢的,如果设置过少的线程数就导致 CPU 资源的浪费。而如果设置更多的线程数,那么当一部分线程正在等待 IO 的时候,它们此时并不需要 CPU 计算,另外的线程便可以利用 CPU 去执行其他的任务,互不影响,这样的话在任务队列中等待的任务就会减少,可以更好地利用资源。
线程池处理任务的流程:
2、AOP是什么,什么场景可以用(切点和连接点),举例说明。
3、GC垃圾回收常见的几个算法。怎么判断某个对象就已经是垃圾了。
4、kafka怎么保证消息有序性。
5、Java虚拟机栈是做什么的。