Java面试

来源:互联网 发布:linux双系统引导修复 编辑:程序博客网 时间:2024/06/07 22:33

进过一段时间的面试,顺利入职京东,特想在此总结一下近期的面试,希望能给正在找工作的人一些帮助,也给自己留一份记录。
先列一下楼主的技术栈:
1, Java
2, spring hibernate struts2 springMVC
3 , jquery, jsp ,servlet, angularJS
4, mysql oracle redis mongodb
5, dubbox, disconf, zookeeper

[java基础]
1,运行时异常和一般异常的区别?
2,如何定位内存溢出和死锁?
3,Java集合是考察Java基础的重中之重,一定要熟悉,需要知道java集合中的继承关系,和各个集合用的数据结构,相互之间的区别
4,hashmap和hashTable的区别?
5,hashMap的底层实现原理?底层用的数据结构?【hashmap是集合中的重点,特别重要,希望读者能有时间看一下hashMap的底层实现,添加删除元素等等,因为这个类的设计思想在Java体系应用很广,基本每个公司都问】
6,Sychronize 和 volitile的区别?
7,悲观锁、乐观锁、重入锁、偏向锁的含义。
8,Java中实现多线程的方式,常用的是哪种?
9,线程池有什么用?
Java基础部分还是读者多刷刷题吧,这个太多,我就不一一列举了。一般不会太难。

【spring】:spring的东西很多,但是可以考察的并不多。
1,spring ioc
2,spring di
3,spring aop
4,Spring aop的底层实现原理【动态代理模式】
5,Java中实现动态代理的两种方式?有什么区别?
6,aop的应用场景

【hibernate】
1,hibernate事物的隔离级别
2,hibernate的事物传播特性
3,hibernate中对象有哪几种状态?如何相互转化?

【struts2】
1,struts2的启动过程?
2,struts2的处理请求过程?
这里希望读者不要去背那个struts2首页的那张图,尽量能从代码的角度去说。例如启动过程:寻找web.xml -> 配置拦截器 –>拦截器中的实现类 ->调用init方法 –>加载struts2的配置文件。这样说下去比较好

【springMVC】
1,springMVC和struts2的主要 区别是什么?
2,什么是restFul风格?

【mysql】
1,主要考索引!主要考索引!主要考索引!
2,mysql的存贮引擎主要有哪几种?应用场景?
3,mysql如何优化?【*】
4,写两条语句,模拟死锁出现的情况
5,内连接、左右链接的区别
6,常用的sql一定要会写。

【redis】
1,redis的数据结构有哪几种?
2,redis数据在集群种如何存贮?【hashmap】
3,redis的key设计上应该注意哪些?
4,redis的持久化模式?常用的是哪个?
5,redis事物。
6,redis是否可以作为注册中心。

【MongoDB】
1,redis和MongoDB的区别?
2,redis和MongoDB分别适用于什么业务场景?
【这里建议读者自己安装一下MongoDB的redis的集群,加深理解】

【dubbox】
1,dubbox的调用原理?【那张图】
2,注册中心挂掉,dubbo还是否可以正常调用?
3,dubbox调用失败如何处理?
4,dubbox和spring cloud的区别?

【zookeeper】
1,zookeeper的选举机制?
2,zk的分布式一致性算法?
3,zk的会话保持是如何做到的
4,zk的常用命令?
5,zk的原语api
6,zk有哪些功能?可以做哪些事儿?
【如果你说你会zk,这些必须会,zk可以考察的内容很多,欢迎补充】

【算法】
1,String操作
2,二叉树的几种便利方式【节点和路径】
3,快速排序,冒泡排序
4,算法的时间复杂度和空间复杂度的计算
5,不会算法题,赶紧去刷LeetCode
6,算法题不仅仅要做出来,要考虑效率问题,首先考虑hash结构!

【设计模式】
这部分的面试一般都会让你自己说你常用的设计模式,一般说三四个就可以了,两个是工厂模式、单例模式。
其他建议的有:代理模式、责任链模式、享元模式等等

这部分重要的是不仅仅要会写这些设计模式,一定要能说出来这些设计模式的应用场景。

【jvm】
1,jvm的内存模型?
2,运行时数据区的划分?
3,主要的垃圾回收算法?
4,jvm如何优化?【jstack】
5,列举几种商用的jvm
6,学习jvm有什么用?说说对你的帮助

【项目部分】
项目部分是重中之重了,一般是二面的问题,或者一般一面也会问一些,最好能有一些高并发、高可用的项目。这儿的问题要根据项目来问,单一般不会脱离以下几个方面。

1,项目目前的tps有多少?
2,项目如何实现高可用和高并发的?【分不同层面去说:接入如何做的, 服务层是如何做的, 数据库层是如何做的?】
3,数据库做没做读写分离?垂直拆分? 水平拆分?
4,项目中的缓存用在什么地方? 如何用的?
5,如何保证数据一致性的?【一般都是最终一致性】。
6,项目配置文件如何管理的?
7,目前架构中如果一个服务挂掉如何处理?
8,Tomcat优化项有哪些?
9,如何做的负载均衡?

【先写这些,后续补充,你欢迎读者补充】

原创粉丝点击