前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

大家都知道金三银四这么一个道理,跳槽前都要提前准备,所以二月就应该开始复习啦!

 

这篇文章主要对我发过的文章进行整理,归纳一些我认为面试可能会考到的知识点,希望对大家有所帮助。

校园春招也陆续开启了,再次提醒:如果是大三的同学,我在这里强烈建议去准备(体验)春招实习生。(大四的当然就不用说啦)

一、Java

1.1Java集合

Java集合是必考的,建议阅读常见集合类的源码(挑重要的方法来看)

  • Collection总览

  • List集合就这么简单【源码剖析】

  • Map集合、散列表、红黑树介绍

  • HashMap就是这么简单【源码剖析】

  • LinkedHashMap就这么简单【源码剖析】

  • TreeMap就这么简单【源码剖析】

  • ConcurrentHashMap基于JDK1.8源码剖析

  • Set集合就这么简单!

  • Java集合总结【面试题+脑图】,将知识点一网打尽!

  • CopyOnWriteArrayList你都不知道,怎么拿offer?

1.2Java多线程

Java多线程也是必考的,其实我记录过我曾经真实遇见过的多线程面试题,这里给大家分享一下。

  1. 多线程了解多少啊?使用多线程会有什么问题?你是怎么理解“线程安全”的?

  2. 如果我现在想要某个操作等待线程结束之后才执行,有什么方法可以实现?为什么要用CountDownLatch?CountDownLatch的底层是什么?(引出AQS)

  3. synchronized关键字来说一下,它的用途是什么?synchronized底层的原理是什么?

  4. 线程安全的容器有哪些?(着重于ConcurrentHashMap、CopyWriteOnArrayList与其他非线程安全容器的区别以及它们的具体实现)

  5. ThreadLocal你了解过吗?主要是用来干什么的?具体的源码实现原理来说一下吧

  6. 产生死锁的条件是什么?我们可以如何避免死锁?(可延伸到操作系统层面上的死锁)

  7. synchronized锁和ReentrantLock锁有什么区别呀?

  8. 线程池你应该也看过吧,来说说为什么要用线程池。JDK默认实现了几个线程池,分别有xxx(自然地ThreadPoolExecutor构造函数的常用几个参数你也得一起说出来)

  9. 。。。还有其他等等

对应的博客文章有:

  • 多线程三分钟就可以入个门了!

  • Thread源码剖析

  • 多线程基础必要知识点!看了学习多线程事半功倍

  • Java锁机制了解一下

  • AQS简简单单过一遍

  • Lock锁子类了解一下

  • 线程池你真不来了解一下吗?

  • 多线程之死锁就是这么简单

  • ThreadLocal就是这么简单

  • Java多线程打辅助的三个小伙子

  • 还在用Synchronized?Atomic你了解不?

1.3设计模式

设计模式需要理解三个左右,熟悉这三个设计模式的用途、应用、写法,在面试的时候问到就不虚了。

对应的设计模式文章:

  • 给女朋友讲解什么是代理模式

  • 包装模式就是这么简单啦

  • 单例模式你会几种写法?

  • 工厂模式理解了没有?

  • 策略模式原来就这么简单!

  • 三分钟学会门面模式!

  • 一分钟学会《模板方法模式》

1.4JVM和NIO

其他的Java基础知识就不谈了,JVM和NIO都是比较常考的,应该对这有一个了解:

  • JVM如何从入门到放弃的?

  • JDK10都发布了,nio你了解多少?

二、数据库

简单的SQL语句是必要掌握的,在笔试的时候也会常常遇见手写SQL。而面试一般会问数据库的锁和索引,事务隔离级别也常考。

  • 数据库两大神器【索引和锁】

  • 数据库面试题(开发者必看)

  • 面试前必须知道的MySQL命令【expalin】

  • 【非原创】为什么MySQL数据库要用B+树存储索引?

如果在简历技能清单上写了Redis,那最好还是看看以下的三个问题(缓存击穿、缓存雪崩、缓存与数据库双写一致性):

  • 面试前必须要知道的Redis面试题

三、框架

对于Java框架,比较爱考Spring,其余的 Struts2/Hibernate/Mybatis其实都不咋考

我认为常见的Spring面试题

  • Spring IOC的概念

    • (为什么要用IOC、为什么不直接new对象、跟直接new对象有什么区别、工厂模式理解了没有?)

  • Spring AOP的概念

    • (AOP是什么意思、AOP能做什么、xxx可以使用AOP来做吗、AOP的底层原理来说一下、代理模式了解多少)

  • Spring MVC的工作流程(原理)

    • (如果你说自己接触过Struts2,很可能就问SpringMVC与Struts2的区别)

  • Spring中是如何管理Bean的(Bean的生命周期)

  • Spring事务管理知识

对应的Spring文章:

  • Spring IOC知识点一网打尽!

  • Spring AOP就是这么简单啦

  • SpringBoot自动配置原理!

  • 一文带你看懂Spring事务!

四、基础

如果是参加校招的同学, 操作系统、计算机网络、数据结构与算法非常非常非常重要的(虽然我学得不咋地..苦逼)。

操作系统:

  • 死锁

  • 进程和线程

  • CPU/内存/硬盘的工作流程(原理)

  • select、poll、epoll简单区别

计算机网络:

  • http(包括http版本区别,https原理)

  • TCP粘包,拆包

  • 从浏览器输入地址到响应的整个过程(越详细越好,这个问题可以涵盖整个计算机网络了)

数据结构与算法:

  • 几个常见的排序算法,常见的数据结构必须要会!

  • 刷题为主,leetcode刷起来

  • 《剑指Offer》

对应的文章:

  • HTTP2和HTTPS来不来了解一下?

  • 二叉树就这么简单

  • 八大基础排序总结

  • 【Java】几道让你拿offer的面试题

  • 【Java】留下没有基础眼泪的面试题

  • 【Java】几道常见的秋招面试题

  • COW奶牛!Copy On Write机制了解一下

五、其他

上面的四点是比较常考的,如果有时间有兴趣,也不妨看看我之前整理过的关于其他知识点的面试题:

  • HTTP常见面试题

  • XML+JSON面试题都在这里

  • Tomcat+Servlet面试题都在这里

  • JSP面试题都在这里

  • 过滤器监听器面试题都在这里

  • JDBC面试题都在这里

  • AJAX常见面试题

  • AJAX跨域完全讲解

  • Hibernate面试题大全

  • Mybatis面试题

六、关于项目

学生:

如果自己还没撸过一个小项目,建议根据自己的想法撸个小项目(或者跟着视频做一个也行)。

为啥要撸个小项目?

  • 对SSM、SpringBoot等知识点的应用,尽可能了解每个框架的实际用处是什么。

  • 撸完项目,可以写在简历上,面试的时候就依照自己的想法来讲讲当时的项目是怎么做的,期间遇到了什么问题,当时是怎么解决的。(在简历上有个项目,总比没的好!)

如果已经有了小项目了,应当总结一下自己做项目的亮点(在简历和面试的时候就可以有话可说了)

 

最后

 

金三银四,二月就要准备!_干货