多次的java面试,让我明白了这些道理
话不多说,直接开始!
一 面试是要了解什么东西
首先你要明确的是面试官所问的内容一定和你简历所写的东西是紧密联系的,一般你没有写在简历上的技能,面试管很少会去提问。
面试大体上包括下面几方面知识类型:
-
Java基础、多线程、IO与NIO、虚拟机、设计模式 数据结构与算法(要有手写算法的能力) 计算机网络(TCP三次握手和四次挥手) 数据通信(RESTful、RPC、消息队列) 操作系统(Linux的基本命令以及使用) 主流框架(Spring底层原理与源码问的很多) 数据存储(最常见的是MySQL、Redis) 分布式
除去技术问题还有什么问题?
-
实际场景题 生活方面的问题 性格/其他方面的问题
二 一般的面试流程
-
自我介绍; 问Java基础知识; 对你写在简历上的项目进行大量提问; 情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查; 你有什么想问面试官的
三 知识点总结
1)集合相关问题(必问)
-
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。 HashMap和Hashtable的区别。 ArrayList、LinkedList、Vector的区别。 HashMap和ConcurrentHashMap的区别。 HashMap和LinkedHashMap的区别。 HashMap是线程安全的吗。 ConcurrentHashMap是怎么实现线程安全的。 HashMap 的长度为什么是2的幂次方
2)多线程并发相关问题(必问)
-
创建线程的3种方式。 什么是线程安全。 Runnable接口和Callable接口的区别。 wait方法和sleep方法的区别。 synchronized、Lock、ReentrantLock、ReadWriteLock。 介绍下CAS(无锁技术)。 volatile关键字的作用和原理。 什么是ThreadLocal。 创建线程池的4种方式。 ThreadPoolExecutor的内部工作原理。 分布式环境下,怎么保证线程安全。
3)JVM相关问题
-
介绍下垃圾收集机制(在什么时候,对什么,做了什么)。 垃圾收集有哪些算法,各自的特点。 类加载的过程。 双亲委派模型。 有哪些类加载器。 能不能自己写一个类叫java.lang.String。
4)设计模式相关问题(必问)
-
先问你熟悉哪些设计模式,然后再具体问你某个设计模式具体实现和相关扩展问题。
5)数据库相关问题,针对MySQL(必问)
-
给题目让你手写SQL。 有没有SQL优化经验。 MySQL索引的数据结构。 SQL怎么进行优化。 SQL关键字的执行顺序。 有哪几种索引。 什么时候该(不该)建索引。 Explain包含哪些列。
6)框架问题
-
Hibernate和Mybatis的区别。 Spring MVC和Struts2的区别。 Spring用了哪些设计模式。 Spring中AOP主要用来做什么。 Spring注入bean的方式。 什么是IOC,什么是依赖注入。 Spring是单例还是多例,怎么修改。 Spring事务隔离级别和传播性。 介绍下Mybatis/Hibernate的缓存机制。 Mybatis的mapper文件中#和$的区别。 Mybatis的mapper文件中resultType和resultMap的区别。
7)遇到的其他问题
-
介绍下栈和队列。 IO和NIO的区别。 接口和抽象类的区别。 int和Integer的自动拆箱/装箱相关问题。 常量池相关问题。 ==和equals的区别。 什么是JDK?什么是JRE?什么是JVM?三者之间的联系与区别 Java和C++的区别 重载和重写的区别。 String和StringBuilder、StringBuffer的区别。 静态变量、实例变量、局部变量线程安全吗,为什么。 try、catch、finally都有return语句时执行哪个。 介绍下B树、二叉树。 分布式锁的实现。 分布式session存储解决方案。 常用的linux命令。
四 关于面试的一些经验
最后分享出自己总结的面试题目与答案,针对众多BAT面试爱问的题目都总结出来了,现在免费送给各位!
领取方式 :
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
我的字节实习offer日志