关于java:5年工作经验Java程序员征战秋招斩获数十个offer总结出这些经验

11次阅读

共计 3278 个字符,预计需要花费 9 分钟才能阅读完成。

写在后面

明天分享的是一位 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 的应用等等

二、多线程

这也是必问的一块了。因为三年工作教训,所以基本上不会再问你怎么实现多线程了,会问得深刻一些 比如说 Thread 和 Runnable 的区别和分割、屡次 start 一个线程会怎么样、线程有哪些状态。当然这只是最根本的,出其不意地,几次面试简直都被同时问到了一个问题,问法不尽相同,总结起来是这么一个意思:

如果有 Thread1、Thread2、Thread3、Thread4 四条线程别离统计 C、D、E、F 四个盘的大小,所有线程都统计结束交给 Thread5 线程去做汇总,该当如何实现?

聪慧的网友们对这个问题是否有答案呢?不难,java.util.concurrent 下就有现成的类能够应用。

另外,线程池也是比拟常问的一块,罕用的线程池有几种?这几种线程池之间有什么区别和分割?线程池的实现原理是怎么样的?理论一些的,会给你一些具体的场景,让你答复这种场景该应用什么样的线程池比拟适合。

最初,尽管这次面试问得不多,然而多线程同步、锁这块也是重点。

synchronized 和 ReentrantLock 的区别、synchronized 锁一般办法和锁静态方法、死锁的原理及排查办法等等,对于多线程,我在之前有些过文章总结过多线程,并发编程的面试问题!

三、IO

IO 分为 File IO 和 Socket IO,File IO 基本上是不会问的,问也问不出什么来,平时会用就好了,另外记得 File IO 都是阻塞 IO。

Socket IO 是比拟重要的一块,要搞懂的是阻塞 / 非阻塞的区别、同步 / 异步的区别,借此了解阻塞 IO、非阻塞 IO、多路复用 IO、异步 IO 这四种 IO 模型,Socket IO 如何和这四种模型相关联。

这是根本一些的,深刻一些的话,就会问 NIO 的原理、NIO 属于哪种 IO 模型、NIO 的三大组成等等,这有些难,过后我也是钻研了很久才搞懂 NIO。提一句,NIO 并不是严格意义上的非阻塞 IO 而应该属于多路复用 IO,面试答复的时候要留神这个细节,讲到 NIO 会阻塞在 Selector 的 select 办法上会减少面试官对你的好感。

如果用过 Netty,可能会问一些 Netty 的货色,毕竟这个框架根本属于以后最好的 NIO 框架了(Mina 其实也不错,不过总体来说还是比不上 Netty 的),大多数互联网公司也都在用 Netty。

四、JDK 源码

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

  1. List、Map、Set 实现类的源代码
  2. ReentrantLock、AQS 的源代码
  3. AtomicInteger 的实现原理,次要能说分明 CAS 机制并且 AtomicInteger 是如何利用 CAS 机制实现的
  4. 线程池的实现原理
  5. Object 类中的办法以及每个办法的作用

这些其实要求蛮高的,去年一整年根本把 JDK 中重要类的源代码钻研了个遍,真的破费工夫、破费精力,当然回头看,是值得的 —- 不仅仅是为了应酬面试。

五、框架

  1. spring 框架中须要援用哪些 jar 包,以及这些 jar 包的用处
  2. srpingMVC 的原理
  3. springMVC 注解的意思
  4. spring 中 beanFactory 和 ApplicationContext 的分割和区别
  5. spring 注入的几种形式
  6. spring 如何实现事物治理的
  7. springIOC 和 AOP 的原理
  8. spring 中循环注入的形式

六、数据库

数据库十有八九也都会问到。一些根本的像 union 和 union all 的区别、left join、几种索引及其区别就不谈了,比拟重要的就是数据库性能的优化,如果对于数据库的性能优化无所不通,那么有工夫,还是倡议你在面试前花一两天专门把 SQL 根底和 SQL 优化的内容筹备一下。

不过数据库倒是不必放心,一家公司往往有很多部门,如果你对数据库不相熟而根本技术又十分好,九成都是会要你的,预计会先把你放到对数据库应用不是要求十分高的部门锤炼一下。

七、数据结构和算法剖析

数据结构和算法剖析,对于一名程序员来说,会比不会好,而且在工作中相对能派上用场。数组、链表是根底,栈和队列深刻一些但也不难,树挺重要的,比拟重要的树 AVL 树、红黑树,能够不理解它们的具体实现,然而要晓得什么是二叉查找树、什么是均衡树,AVL 树和红黑树的区别。记得某次面试,某个面试官和我聊到了数据库的索引,他问我:

你晓得索引应用的是哪种数据结构实现吗?

答到用的 Hash 表吧,答错。他又问,你晓得为什么要应用树吗?答到因为 Hash 表可能会呈现比拟多的抵触,在千万甚至是上亿级别的数据背后,会大大增加查找的工夫复杂度。而树比较稳定,根本保障最多二三十次就能找到想要的数据,对方说不齐全对,最初咱们还是交换了一下这个问题,我也明确了为什么要应用树。

八、JVM

出其不意,Java 虚拟机应该是很重要的一块内容,后果在这几家公司中被问到的概率简直为 0。要晓得,去年可是花了大量的工夫去钻研 Java 虚拟机的,光周志明老师的《深刻了解 Java 虚拟机:JVM 高级个性与最佳实际》,就读了不下五遍。

言归正传,尽管 Java 虚拟机没问到,但我感觉还是有必要钻研的,就简略地列一个提纲吧,谈谈 Java 虚拟机中比拟重要的内容:

  1. Java 虚拟机的内存布局
  2. GC 算法及几种垃圾收集器
  3. 类加载机制,也就是双亲委派模型
  4. Java 内存模型
  5. happens-before 规定
  6. volatile 关键字应用规定

兴许面试无用,但在走向大牛的路上,不可不会,这个是面试了几家公司最初通过整合写出了这些面试题,面试就决定了你的薪资,肯定要好好看待,这些问题可能不会问到,然而程序员技多不压身,最初收到了百度的 offer,薪资还不错,把这些面试题分享进去心愿能帮忙那些打算跳槽的人~~

20 道精选 JVM 重点面试问题!

学习共勉

金九银十曾经过半,就目前国内的面试模式来讲,在面试前踊跃的筹备面试,温习整个 Java 常识体系将变得十分重要,能够很负责任的说一句,温习筹备的是否充沛,将间接影响你入职的成功率。但很多小伙伴却苦于没有适合的材料来回顾整个 Java 常识体系,或者有的小伙伴可能都不晓得该从哪里开始温习。我偶尔失去一份整顿的材料,不论是从整个 Java 常识体系,还是从面试的角度来看,都是一份含技术量很高的材料(PDF 版)。

材料收费支付形式【戳此处】

更多架构专题及视频材料展现如下:

材料收费支付形式【戳此处】

正文完
 0