面试题目

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

评论已关闭。