你应该知道的JAVA面试题

经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。

基础题目

  1. Java线程的状态
  2. 进程和线程的区别,进程间如何通讯,线程间如何通讯
  3. HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别
  4. Cookie和Session的区别
  5. 索引有什么用?如何建索引?
  6. ArrayList是如何实现的,ArrayList和LinedList的区别?ArrayList如何实现扩容。
  7. equals方法实现
  8. 面向对象
  9. 线程状态,BLOCKED和WAITING有什么区别
  10. JVM如何加载字节码文件
  11. JVM GC,GC算法。
  12. 什么情况会出现Full GC,什么情况会出现yong GC。
  13. JVM内存模型
  14. Java运行时数据区
  15. 事务的实现原理

技术深度

  1. 有没有看过JDK源码,看过的类实现原理是什么。
  2. HTTP协议
  3. TCP协议
  4. 一致性Hash算法
  5. JVM如何加载字节码文件
  6. 类加载器如何卸载字节码
  7. IO和NIO的区别,NIO优点
  8. Java线程池的实现原理,keepAliveTime等参数的作用。
  9. HTTP连接池实现原理
  10. 数据库连接池实现原理
  11. 数据库的实现原理

技术框架

  1. 看过哪些开源框架的源码
  2. 为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?
  3. Netty是如何使用线程池的,为什么这么使用
  4. 为什么要使用Spring,Spring的优缺点有哪些
  5. Spring的IOC容器初始化流程
  6. Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean
  7. Spring AOP实现原理
  8. 消息中间件是如何实现的,技术难点有哪些

系统架构

  1. 如何搭建一个高可用系统
  2. 哪些设计模式可以增加系统的可扩展性
  3. 介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。
  4. 抽象能力,怎么提高研发效率。
  5. 什么是高内聚低耦合,请举例子如何实现
  6. 什么情况用接口,什么情况用消息
  7. 如果AB两个系统互相依赖,如何解除依赖
  8. 如何写一篇设计文档,目录是什么
  9. 什么场景应该拆分系统,什么场景应该合并系统
  10. 系统和模块的区别,分别在什么场景下使用

分布式系统

  1. 分布式事务,两阶段提交。
  2. 如何实现分布式锁
  3. 如何实现分布式Session
  4. 如何保证消息的一致性
  5. 负载均衡
  6. 正向代理(客户端代理)和反向代理(服务器端代理)
  7. CDN实现原理
  8. 怎么提升系统的QPS和吞吐量

实战能力

  1. 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。
  2. 开发中有没有遇到什么技术问题?如何解决的
  3. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。
  4. 新浪微博是如何实现把微博推给订阅者
  5. Google是如何在一秒内把搜索结果返回给用户的。
  6. 12306网站的订票系统如何实现,如何保证不会票不被超卖。
  7. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

软能力

  1. 如何学习一项新技术,比如如何学习Java的,重点学习什么
  2. 有关注哪些新的技术
  3. 工作任务非常多非常杂时如何处理
  4. 项目出现延迟如何处理
  5. 和同事的设计思路不一样怎么处理
  6. 如何保证开发质量
  7. 职业规划是什么?短期,长期目标是什么
  8. 团队的规划是什么
  9. 能介绍下从工作到现在自己的成长在那里

你应该知道的JAVA面试题的更多相关文章

  1. 面试前必须要知道的Redis面试题

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零单排学Redis[青铜] 从零单排学 ...

  2. 你应当知道的Java牛人

    Java领域有非常多著名的人物,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. 本文是<最受欢迎的8位Java牛人>的2.0版本号. PS:排名不分先后.本文的 ...

  3. java 面试题总结(一)

    从网上找了些面试题,自己手工总结了理解了一下,如有理解错误,还请指正. java基础 1.String 为什么是final的?     https://www.zhihu.com/question/3 ...

  4. 面试前必须要知道的21道Redis面试题

    1.使用redis有哪些好处? 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 支持丰富数据类型,支持string,list,set,so ...

  5. 关于Java高并发编程你需要知道的“升段攻略”

    关于Java高并发编程你需要知道的"升段攻略" 基础 Thread对象调用start()方法包含的步骤 通过jvm告诉操作系统创建Thread 操作系统开辟内存并使用Windows ...

  6. 每一个JavaScript开发者都应该知道的10道面试题

    JavaScript十分特别.而且差点儿在每一个大型应用中起着至关关键的数据.那么,究竟是什么使JavaScript显得与众不同,意义非凡? 这里有一些问题将帮助你了解其真正的奥妙所在:   1.你能 ...

  7. Java笔试题解答和部分面试题

    面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...

  8. 来自投资银行的20个Java面试题

    问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...

  9. java 面试题2

    Java 模拟面试题 1.面向对象的特点 继承,封装,多态 2.对象和类的区别是什么? 对象是对客观事物的抽象,类是对对象的抽象.类是一种抽象的数据类型,它们的关系是,对象是类的实例,类是对象的模板. ...

随机推荐

  1. Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在 ...

  2. MSSQL 2005/2008 日志压缩清理方法小结

    适用于SQL Server 2005的方法 --------------------------------------------- 复制代码 代码如下: USE DNName GO 1,清理日志 ...

  3. VMware vCloud Director network ports diagram

    see:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&exter ...

  4. C#随机数字生成的一种方法

    1.参考: public class RandomLongGenerater { public static long New(int bit) { ) { throw new Exception(& ...

  5. HttpLuaModule——翻译(Nginx API for Lua)

    现在我已经将翻译的内容放到:http://wiki.nginx.org/HttpLuaModuleZh Nginx API for Lua Introduction 各种各样的*_by_lua和*_b ...

  6. 在cmd中为命令设置别名以及启动cmd时自动执行bat

    http://www.cnblogs.com/fstang/archive/2013/04/06/3002006.html 简短步骤: 1.关闭所有在运行的CMD窗口 2.创建文件C:\cmd-ali ...

  7. Cocos2d-js 3.0 颜色变换(调整sprite/图片的色调)

    Flash在滤镜方面做得比较成熟,starling也有很多现成的办法. 但Cocos2D这里就显得比较单薄,百度/谷歌很少相关资料. 后续如果有时间,再慢慢整理各种滤镜效果.     这里先介绍一下颜 ...

  8. DNS服务器的维护与故障排除

    1. DNS故障诊断的常用工具或命令 诊断DNS解析故障的四个常用命令工具: ①unbound-checkconf:用于检查unbound服务器配置文件的语法错误 ②unbound-control:是 ...

  9. Fiddler配置https

    问题描述: fiddler加载认证不成功... 问题解决: 手工生成认证证书 00.配置HTTPS 01.勾选https 02.添加ssh认证 11. 找到fiddler的安装目录 手工生成认证秘钥 ...

  10. js截取相应的域名----正则匹配法 和校验Url 正则表达式

    js截取相应的域名----正则匹配法 和校验Url 正则表达式 用javascript截取相应的域名方法两种,供大家参考 1.方法1: [javascript] view plain copy fun ...