一般来说,无论是大公司还是小公司,在面试Java开发人员的时候,都会从以下几个方面进行考察:基础很重要,基础很重要,基础很重要啊
基础篇
一、Java基础
1.1 HashMap的底层实现原理(put、get、扩容)、HashMap是否是线程安全、JDK1.7和JDK1.8中的HashMap在底层实现原理上有什么区别?
1.2 Object 有哪些自带的方法?
1.3 深拷贝和浅拷贝的区别?
1.4 设计模式中,如何编写一个静态内部类?
1.5 有几种方法遍历一个Map,获取对应的key和value? 效率最高的是哪一种,为什么?
1.6 String StringBuffer StringBuilder的区别
1.7 BIO通信和NIO通信 有什么区别?
二、多线程编程
2.1 创建线程的三种不同方式 (Thread 、implement、Callable)
2.2 sychronized 和 lock的区别
2.3 volatile的工作原理
2.4 ConcurrentHashMap是如何实现线程安全的
2.5 消费者 - 生成者 模式的编写
2.6 wait 和sleep的区别
2.7 JDK自带线程池有哪几种、底层的7个参数各自的含义
2.8 常见的阻塞队列有哪几种,底层实现原理是怎样的?
三、数据库
3.1 基本操作(insert select drop groupby orderby 等基本操作)
3.2 数据库优化(用索引,有几种常用的索引,各自有什么区别)
3.3 数据库常见引擎有哪些,底层用的是什么数据结构?
5、数据库连接池(c3p0 、dbcp、druid )的工作原理,包括底层源码的各个参数的含义
框架篇:
1、Spring 的 IOC(反射) 和 AOP(动态代理) 的底层实现原理、AOP的应用场景可以有哪些?
2、动态代理技术分为 :CGLIB代理和JDK代理,它们各自的区别
3、事务的四种隔离级别以及七种传播特性
4、MyBatis的增删改查、xml文件中什么情况下回导致sql注入?MyBatis和JDBC相比,有哪些优势?
5、微服务的RPC框架的通信框架原理图?zookeeper在微服务中充当什么角色?常见的RPC框架有哪些(Dubbo 、Spring Cloud、Thrift),此处最好结合原理自己实现一个demo,深刻理解下微服务框架的使用规则。
6、Zookeeper+kafka的(有序的)消息机制原理和使用
7、Redis基本数据结构有哪些?单节点和集群模式的工作原理?为什么Redis是单线程,有什么作用?Redis集群模式下如何判断某个key到底存储在哪个节点?
8、Tomact的容器基本使用、SpringBoot的使用(此处最好自己编写demo,深刻理解下SpringBoot的好处)
9、Netty框架的实现原理,此处最好结合Netty编写一个Server-Client的demo,感受下Netty框架的编程规则
JVM篇
1、JVM有哪三种ClassLoader,分别对应的继承关系是怎样的?
2、JVM 的堆 和 栈 分别存储什么样的变量?
3、JVM 堆 分成哪几个部分,每个部分各自作用是什么?
4、MinorGC 、Major GC、Full Gc的各自是什么情况下触发的?
5、常用的GC算法有四种,各自的原理是怎样的?
6、JVM 常用的调优命令行 jstat jmap jstack htop 以及 jconsole 、VisualVM可视化工具的使用
面试现场编程篇:
1、如何判断单链表是否有环?(注意判断节点是null的情况,面试官很看重这点)
2、单链表如何实现反转?(注意判断节点是null的情况,面试官很看重这点)
3、如何求高效获取两个升序数组的交集?
4、二叉树的深度优先和广度优先的实现
5、递归实现求二叉树的高度
6、递归和非递归实现 :二叉树 前序遍历、中序遍历、后序遍历的实现
7、斐波那契数列的递归实现、以及递归实现中如何实现递归优化
8、减治法实现 Top-K问题:最小复杂度求取海量数据中前k大个数。
9、对于给定数组,算出任意三个数相加为0的所有组合
10、快速排序和归并排序
2018.10.29 整理,后续有新的题型会继续更新~~~谢谢支持
网友评论