2020金三银四季一名5年java程序员对面试的指导与建议

2020金三银四季一名5年java程序员对面试的指导与建议
今天分享的是一位5年工作经验的Java工程师在帝都的面试经验总结,看看这些互联网公司都爱问些什么题,希望对大家的面试有指导意义。

从事Java开发也有5年经验了,4月初自己的开启面试经历之旅,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其中包括奇虎360等

首先不同面试官面试风格一定不同,这里是我总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程等几个模块。

一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西----但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

一、Java基础

  1. String类为什么是final的。

  2. HashMap的源码,实现原理,底层结构。

  3. 反射中,Class.forName和classloader的区别

  4. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。

  5. Java中的队列都有哪些,有什么区别。

  6. Java的内存模型以及GC算法

  7. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高

  8. Java内存泄露的问题调查定位:jmap,jstack的使用等等

二、多线程

多线程是Java中普遍认为比较难的一块。

多线程用好了可以有效提高cpu使用率, 提升整体系统效率, 特别是在有大量IO操作阻塞的情况下;这里整理的Java多线程面试题及答案你必须都要清楚。

但是它也是一柄双刃剑, 如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。

在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些高级特性的使用场景。在Java技术栈公众号回复"多线程"可获取多线程系列教程。

  • 多线程的实现和启动

  • callable 与 runable 区别

  • syncrhoized ,reentrantLock 各自特点和比对

  • 线程池

  • future 异步方式获取执行结果

  • 内存模型

  • lock

2020金三银四季一名5年java程序员对面试的指导与建议

三、JDK源码

要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。过程中被问了不少JDK源码的问题,其中最刁钻的一个问了,String的hashCode()方法是怎么实现的,幸好平时String源代码看得多,答了个大概。JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:

1.List、Map、Set实现类的源代码

  1. ReentrantLock、AQS的源代码

  2. AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的

4.线程池的实现原理

  1. Object类中的方法以及每个方法的作用

这些其实要求蛮高的,去年一整年基本把JDK中重要类的源代码研究了个遍,真的花费时间、花费精力,当然回头看,是值得的----不仅仅是为了应付面试。

2020金三银四季一名5年java程序员对面试的指导与建议

四、框架

  1. spring框架中需要引用哪些jar包,以及这些jar包的用途

  2. srpingMVC的原理

  3. springMVC注解的意思

  4. spring中beanFactory和ApplicationContext的联系和区别

  5. spring注入的几种方式

  6. spring如何实现事物管理的

  7. springIOC和AOP的原理

  8. spring中循环注入的方式

五.JVM

出乎意料,Java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。要知道,去年可是花了大量的时间去研究Java虚拟机的,光周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,就读了不下五遍。

言归正传,虽然Java虚拟机没问到,但我觉得还是有必要研究的,就简单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:

  1. Java虚拟机的内存布局

  2. GC算法及几种垃圾收集器

  3. 类加载机制,也就是双亲委派模型

  4. Java内存模型

  5. happens-before规则

  6. volatile关键字使用规则

2020金三银四季一名5年java程序员对面试的指导与建议
也许面试无用,但在走向大牛的路上,不可不会,这个是面试了几家公司最后经过整合写出了这些面试题,面试就决定了你的薪资,一定要好好对待,这些问题可能不会问到,但是程序员技多不压身,最后收到了百度的offer,薪资还不错,把这些面试题分享出来希望能帮助那些打算跳槽的人~~