前言
只有光头才能变强。
文本已收录至我的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多线程也是必考的,其实我记录过我曾经真实遇见过的多线程面试题,这里给大家分享一下。
-
多线程了解多少啊?使用多线程会有什么问题?你是怎么理解“线程安全”的?
-
如果我现在想要某个操作等待线程结束之后才执行,有什么方法可以实现?为什么要用CountDownLatch?CountDownLatch的底层是什么?(引出AQS)
-
synchronized关键字来说一下,它的用途是什么?synchronized底层的原理是什么?
-
线程安全的容器有哪些?(着重于ConcurrentHashMap、CopyWriteOnArrayList与其他非线程安全容器的区别以及它们的具体实现)
-
ThreadLocal你了解过吗?主要是用来干什么的?具体的源码实现原理来说一下吧
-
产生死锁的条件是什么?我们可以如何避免死锁?(可延伸到操作系统层面上的死锁)
-
synchronized锁和ReentrantLock锁有什么区别呀?
-
线程池你应该也看过吧,来说说为什么要用线程池。JDK默认实现了几个线程池,分别有xxx(自然地ThreadPoolExecutor构造函数的常用几个参数你也得一起说出来)
-
。。。还有其他等等
对应的博客文章有:
-
多线程三分钟就可以入个门了!
-
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等知识点的应用,尽可能了解每个框架的实际用处是什么。
-
撸完项目,可以写在简历上,面试的时候就依照自己的想法来讲讲当时的项目是怎么做的,期间遇到了什么问题,当时是怎么解决的。(在简历上有个项目,总比没的好!)
如果已经有了小项目了,应当总结一下自己做项目的亮点(在简历和面试的时候就可以有话可说了)
最后