面试经验(Java)
2019-08-28 本文已影响0人
Harlan1994
近来秋招已经开始有一段时间了,很多学弟学妹,相信是在论文和工作之间苦苦煎熬着。下面给大家分享自己当初面试Java工程师岗位的经验,主要是一些整理之前看过的知识点,希望有了这些资料,慢慢啃下来你会有所收获。内容不像其他分享整理的那么全面,但是都是在面试中有所体现的重点内容。
- Java语言进阶面试常考内容,里面包括以下内容,讲解非常详细(再次给作者一百个赞),学好里面的内容,相信你会对Java的基础知识有很大提升
- 深入理解Java类型信息(Class对象)与反射机制
- 深入理解Java枚举类型(enum)
- 深入理解Java注解类型(@Annotation)
- 深入理解Java类加载器(ClassLoader)
- 深入理解Java并发之synchronized实现原理(面试问过不止一次)
- Java并发编程-无锁CAS与Unsafe类及其并发包Atomic
- 深入理解Java内存模型(JMM)及volatile关键字(内存模型是Java语言的重要知识点,想要学好Java,这一关必过,也是常考的点)
- 剖析基于并发AQS的重入锁(ReetrantLock)及其Condition实现原理(Java的锁和MySQL的锁机制一样是面试官常考的点)
- 剖析基于并发AQS的共享锁的实现(基于信号量Semaphore)
并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue
PS: 除了上面的知识点以外,还有以下几点非常重要,但是我这边没找到收藏的链接:
- Java对基础数据类型的封装,拆箱装箱机制
- Java虚拟机内存管理、GC算法(重点,建议直接看《深入理解Java虚拟机》部分章节)
- Java语法层面的比如 类、接口、抽象类、private、public关键字等知识点
- syncronized、volatile关键字(重点会问,和Java锁、内存模型部分知识分不开)
Java语言层面的基础知识众多,问的比较多的也就上面这些,当然最终问什么全是考官个人爱好。
- HashMap(单独列出来可见其重要性)
面试主要问的内容有以下两点,当然,HashMap的源码实现有非常多的让人眼前一亮的代码,好好学习人家大拿写的代码对自己的有很大好处。
- JDK1.7 和 JDK1.8实现的不同,要深入源码层面,不能仅仅局限于简单的比较
- HashMap出现死循环的原因,能否复现?生产遇到这个问题如何解决?
这是链接:Map 综述(一):彻头彻尾理解 HashMap,当然,这是一个系列的文章,建议都仔细好好认真的学习10遍,T。T
- 算法
算法我只建议好好认真学习以下算法,因为算法繁多,而且算法难度是有目共睹的,不建议花太多时间学习,但是数据结构与算法的重要性是大家都清楚的,有时间还是要多多学习,不是说不建议学就不学,而是目前而言,不建议花太多时间准备。(因为我知道准备了也没用,算法方面临时抱佛脚起不到作用的)
- 排序算法,都好好学一遍,每一个排序算法都得知道原理,其中几个诸如冒泡排序,插入排序之类的简单排序,还是要一分钟内写出可运行的代码来的。非常重要且常考但却有点难度的算法有 快速排序, 堆排序,这两个算法有点难度,但是建议会写出可运行代码。(多写两遍自然就会了)
- 一些非常经典的算法,只有大神才能设计出如此优雅的算法,值得学习,多学学这些算法能解决的问题 经典算法系列之(一) - BitMap, 作者还有一个系列的经典算法,不妨进去一探究竟。
PS:算法部分不定期更新......
- 框架部分
-
spring家族,Spring,Spring MVC, Spring Boot。Spring家族的部分要学的太多,建议直接看书,在网络上各种博客中,建议看的只有一点,主要是Spring的整体思想,非常重要,这是spring学习的起点,重要讲解spring为何诞生,他是怎么解决问题的,其他技术上的细节是说不完的,建议直接看书。
关于Spring IOC (DI-依赖注入)你需要知道的一切 非常详尽的介绍了spring核心之一的依赖注入 -
MyBatis,Spring JPA学会使用的接触上比较两者的优劣
- 数据库系列(MySQL和Redis问的最多)
- Redis,redis的数据结构设计的非常精妙,值得研究,建议直接看书《Redis设计与实现》,学完这本书感觉Redis的实现原理基本都懂了,这本书用python这种非常易懂的语言作为写算法的为代码,非常值得一读
- MySQL的锁,引擎,两个部分非常容易被考官问到。这里收藏了两篇博客:
mysql共享锁与排他锁
什么是脏读,不可重复读,幻读
不定期更新......