一、Spring.mvc的优点,原理,流程
二、Mybatis的原理优点
三、集合里面那些对象的原理
四、扩容原理,特别是map的底层
五、Hashmap、Hashtable和cocurrentHashMap的区别,要讲出它们各自的实现原理才行,好比Hashmap的扩容机制、cocurrentHashMap的段锁原理、多线程安全性。
六、几种造线程池的方法,区别
七、线程有哪几种状态,他们是如何转换的
八、Rpc原理,以及大体流程
九、Nio和netty的区别,为何netty的性能高,nio,bio,aio的区别
十、阻塞io,和非阻塞io的区别
十一、redis的集群
十二、各类锁的区别,原理使用,并发包的熟悉程度
1三、Redis和数据库结合的使用场景
1四、Memached过程和原理 (问的少)
1五、Redis作队列的原理
1六、zk作订阅的原理,底层,zk的选举算法,是怎么处理的
1七、hash碰撞的解决办法
1八、treemap红黑树(问的少)
1九、jvm调优经验
20、jvm内存模型,jvm双亲委派,jvm经常使用参数,你平时调优怎么设置的,举例子。
2一、类加载器机制
2二、数据库索引
2三、手写递归,手写二分查找,手写生产者,消费者模型
2四、js闭包(问的少)
2五、nio是否了解 阻塞以后通知机制是怎样的?
2六、Java 的序列化作什么用的 序列化id会出现哪些问题?
2七、 在Java中Executor和Executors的区别?
2八、 为何使用Executor框架比使用应用建立和管理线程好?
2九、怎么经过linux命令去分析jvm里面那个线程阻塞了
30、Java中用到的线程调度算法是什么?
3一、什么是多线程中的上下文切换?
3二、classloader结构,是否能够本身定义一个java.lang.String类,为何? 双亲代理机制。
3三、有没有作过jvm内存调优,如何作的,举例子,用过哪些工具?
3四、Java中的volatile关键是什么做用?怎样使用它?在Java中它跟synchronized方法有什么不一样?
3五、面试官从简历里抽了一个较感兴趣的项目,让把项目简单介绍了下,针对项目问了几个技术问题
3六、 介绍Java中垃圾回收机制,程序员平时须要关注这个吗?为何?请举例说明。
3七、数据库隔离级别介绍、举例说明。
3八、override和overload的区别。
3九、求二叉树的最大距离(即相距最远的两个叶子节点),写代码。
40、 两个栈实现一个队列,写代码。
4一、 你以为你的优点是什么?有什么技术薄弱点吗?
4二、数据库sql调优,慢sql定位
4三、索引有哪几种,区别,使用场景
4四、mysql引擎,哪几种,区别使用场景
4五、linux shell脚本的使用,统计,排序等等
4六、linux 经常使用命令,例如top命令查看进程的后每一个参数的意义
4七、乐观锁和悲观锁
4八、nginx的配置
4九、你遇到的OOM问题,怎么解决的。
50、你在项目中遇到过那些高并发的问题,怎么解决的。
5一、谈谈常见的负载均衡策略 分别有什么优缺点,用过哪些
5二、jdk\bin下的工具你用过哪些java
写java的基本上都是作应用系统的,用到算法的机会几乎没有,因此通常不会考。可是若是工做年限比较长,保不齐面试官怀疑你的编程能力,故意要考考,因此快排、堆排、逆转链表、遍历二叉树之类的基础仍是复习复习吧。
若是面的是bat核心部门,担忧遇见装逼人士的话,也能够提早复习下《编程之美》之类的。
算法问题,写不出代码,可是若是说出思路会有加分mysql
hashmap面试官最喜欢考,必定要搞明白原理。
treemap知道就能够,应该没人闲的蛋疼考红黑树。
threadlocal面试官也喜欢考,要搞明白原理
反射、动态代理、ioc、aop复习下吧,几乎必考
nio、aio几乎都会问,抽空写写例程,知道netty mina
class loader: 知道双亲委派,若是知道tomcat、jetty class loader异同更佳linux
gc不少面试官都喜欢考
面试前背熟各类gc算法的区别,理解原理。
G1不少面试官本身都不明白,没时间就不用管。nginx
传统IT通常接触不到高并发,不过不要紧按下面说的作,应付面试问题不大
把java.util.concurrent下面全部的包和类通读一遍,理解原理、记住核心代码、写例程,网上有不少concurrent相关类原理解析的文章,对着文章看源代码理解起来问题不大。
有些类代码很复杂好比aqs,看不明白就算了,也不用太花功夫,记住原理便可,由于大部分面试官也不明白。
必定要写例程,例程最好跟你的业务能扯上一点点关系,这样面试的时候就是你实际项目里面的代码了。
面试官喜欢考的类有:ConcurrentHashMap、读写锁、Condition、线程池、Barrier、CountDownLatch、Callable、BlockingQueue程序员
传统IT通常也接触不到,若是不想准备就算了,若是想准备的话,就在本身的开发机上撘3个linux虚机, 按照网上的教程本身一步一步撘一个hadoop环境出来,而后找几个实际业务中生成出来的log,写几个mr程序处理一下。
面试的时候就能够很谦虚的说,实际项目里面用过,可是用的很少web
websphere、weblogic、jboss之类的就不用准备了,应该没人问你这些啦。
有时间的话,看看tomcat和jetty的源代码,重点看线程模型和io,这将是一个很好的加分项面试
oracle、sybase、db2不会有人关心了,若是以前没用过mysql的话,找本介绍innodb原理的书好好通读一遍吧。
一、理解myisam和innodb的区别 二、理解关系型数据库索引的原理,理解一些简单的索引优化的原则。
面试官很喜欢给出一堆where子句,考索引、复合索引什么状况下起做用
三、致使数据库索引失效的场景有哪些
四、not in 与 not exists 有什么区别? in查询不对null进行处理
五、like 是否走索引?什么状况下走 什么状况下不走redis
一致性哈希不少面试官喜欢考,提早准备下吧。算法
这些没搞过就没搞过吧,这种框架层面的东西,对于一个有经验的java码农,学起来也就是分分钟的事情。
不过你也能够说这些我没用过,可是我知道原理,而后说一堆动态代理、cglib的原理出来,也是加分。sql
以上是一些面试题目,和基础知识。若是同时在生产环境,有不少排查处理问题的经验,会比较加分。通常面试没啥问题,可是仍是会考察写代码功底,因此仍是须要准备下