JavaGuide (还在整理中,请耐心等待,如果急需相关资料,请邮箱联系我。)
I 【技术面试必备基础知识】
II 【Java学习+面试指南】
III【All Algorithms implemented in Java】
Java基础
♦ JVM相关
♦ Java中的集合类
♦ 设计模式相关
♦ Java语言相关
♦ Java基础专题
多线程和并发
♦ 多线程和并发专题
♦ 并发包的问题
♦ 阻塞队列相关的问题
♦ 多线程相关的问题
♦ 其他问题
数据库
♦ 数据库专题
♦ sql 注入的问题
♦ 连接问题
♦ 存储过程相关问题
♦ 范式问题
♦ 事务问题
♦ 锁的问题
♦ 命令问题
♦ 索引问题
♦ 存储引擎问题
♦ 其他问题
操作系统
♦ 操作系统专题
♦ linux系统常用命令
计算机网络
♦ TCP/IP相关的问题
♦ HTTP 协议相关的问题
♦ 安全相关的问题
♦ Socket 编程
♦ 其他相关的问题
I 笔面试算法题型分类及其解析(Java版)
♦ 链表专题
♦ 双指针专题
♦ 字符串专题
♦ 数学类专题
♦ 动态规划专题
♦ 二分类查找专题
♦ 哈希表专题
♦ 回溯专题
♦ 位运算专题
♦ JVM相关
• 1. 说一下Java的垃圾回收机制。
• 2. JVM的内存布局内存模型。
• 3. JVM 的 4 种引用和使用场景?
• 4. 说一下引用计数法与可达性分析算法。
• 5. 如何判断对象是不是垃圾?
• 6. 堆里面的分区和各自的特点。
• 7. Minor GC 与 Full GC 分别在什么时候发生?
• 8. 对象创建方法,对象的内存布局,对象的访问定位。
• 9. 说一下几种垃圾收集算法的原理和特点,应用的场景。怎么优化复制算法?
• 10. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
• 11. 什么是内存泄露和内存溢出。
• 12. 如何减少 gc 出现的次数(java 内存管理)。(重点!!!!)
• 13. 数组多大放在 JVM 老年代? 永久代对象如何 GC?如果想不被 GC 怎么办?如果想在 GC 中生存 1 次怎么办?
• 14. JVM 常见的启动参数。
• 15. 说下几种常用的内存调试工具: jps、 jmap、 jhat、 jstack、 jconsole,jstat。
• 16. 说下虚拟机的类加载机制。
• 17. 说下双亲委派模型。双亲委派模型中有哪些方法。用户如何自定义类加载器 。怎么打破双亲委托机制?
• 18. 描述 Java 类加载器的工作原理及其组织结构。
• 21. Java 编译的过程。
• 22. class 文件是什么类型文件(字节码文件的格式)?
• 23. 即时编译器的优化方法。
• 24. 静态分派与动态分派。
• 25. 编译阶段对程序做了哪些优化?
• 26. new 的对象如何不分配在堆而分配在栈上?
♦ Java中的集合类
• 1. ArrayList、LinkedList、Vector 的区别和实现原理。
• 2. HashMap、HashTable、LindedHashMap、ConcurrentHashMap、WeakHashMap 的区别和实现原理。
• 3. 讲一下集合中的 fail-fast 机制。
• 4. 介绍一下 Java 中的集合框架?
• 5. Collection 包结构与 Collections 的区别。
♦ 设计模式相
• 1. 编写线程安全的单例模式。
• 2. 享元模式。
• 3. 原型模式。
♦ Java语言相关
• 1. 标识符的命名规则。
• 2. Instanceof 关键字的作用。
• 3. strictfp 关键字的作用。
• 4. 什么是不可变类?
• 5. Java 中的基本数据类型占据几个字节?
• 6. 运算符的优先级。
• 7. 强制类型转换时的规则有哪些。
• 8. 数组初始化时需要注意的问题。
• 9. 如何在 main()方法执行前输出“Hello world”?
• 10. Java 程序初始化的顺序(对象实例化的过程)。
• 11. 构造函数的特点。
• 12. 序列化与反序列化。
• 13. Switch 能否用 string 做参数?
• 14. equals 与==的区别。
• 15. Hashcode 的作用。
• 16. hashCode() 与 equals() 生成算法、方法怎么重写。
• 17. Object 有哪些公用方法?
• 18. String、StringBuffer 与 StringBuilder 的区别。
• 19. try catch finally,try 里有 return,finally 还执行么?如果会的话,什么时候执行,在 return 之前还是 return 之后?
• 20. 说下异常的原理。
• 21. Java 面向对象的三个特征与含义。
• 22. java 多态的实现原理(实现机制)。
• 23. Override(覆盖、重写)和 Overload(重载)的区别。
• 24. 接口与抽象类的区别。
• 25. 静态内部类和非静态内部类的区别。
• 26. static 的使用方式。
• 27. 反射的作用与原理。如何提高反射效率?
• 28. Java 和 C++/C 的区别,JAVA 的优点。
• 29. 同一个.java 文件中是否可以有多个 main()方法?
• 30. JAVA 中的类和成员的访问控制。
• 31. System.out.println()方法使用时需要注意的问题。
• 32. 继承和组合区别。
• 33. final finally finalize 的区别。
• 34. JDK1.7 和 1.8 的区别。
• 35. List<String>能否转为List<Object>?能否List<Object>list=newArrayList<String>()?List<String>list=new ArrayList<Object>()?原因?
• 36. 泛型的好处?
♦ Java基础专题
• 1. String 中的”+”操作是怎么回事?
• 2. StringBuilder 和 StringBuffer 底层是怎么实现的。
• 3. String 类中常用的方法。
• 4. 创建虚引用的时候,构造方法传入一个 ReferenceQueue,作用是什么。
• 5. 栈溢出的原因和解决方法。
• 6. HashMap的加载因子的作用。
• 7. HashMap中的 key 可以是任意对象吗?(Set 中元素的内容可以改变吗?)
• 8. 如果你定义一个类,包括学号,姓名,分数,如何把这个对象作为 key?
• 9. Java是如何实现跨平台的。
• 10. 什么是泛型,为什么要使用以及类型擦除。
• 11. Java中的 NIO,BIO 分别是什么。NIO 主要用来解决什么问题。
• 12. 面向对象的 6 个基本原则(设计模式的 6 个基本原则)。
• 13. JDK 源码中用到的设计模式。
• 14. 执行 Student s = new Student();在内存中做了哪些事情?
• 15. 你知道的开源软件有哪些?
• 16. String 型变量如何转成 int 型变量,反过来呢?
• 17. 怎么判断数组是 null 还是为空?
• 18. 怎样让一个线程放弃锁。
• 19. IO 里面常见的类。
• 20. xml 解析方式。
♦ 多线程和并发专题
• 1. 什么是缓存一致性问题?如何解决呢?
•
•
•
•
•
•
•
♦ 并发包的问题
•
•
♦ 阻塞队列相关的问题
•
•
♦ 多线程相关的问题
•
•
♦ 其他问题z
•
•
♦ 数据库专题
• 优化查询的方法?
• 如果有一个特别大的访问量到数据库上,怎么做优化?
• 数据库分表, 分区, 分库
♦ sql注入的问题
• SQL语句应该考虑哪些安全问题?
• 什么叫SQL注入,如何防止?请举例说明。
♦ 连接问题
• 内连接与外链接的区别?
• inner join 和 left join 的性能比较。
• 联合查询的索引使用
• 数据库中两个表求交集、并集、差集。
♦ 存储过程相关问题
• 存储过程的概念以及优缺点是什么。
♦ 范式问题
• 数据库的三级范式?
♦ 事务问题
• 数据库事务正确执行的四个基本要素(事务的四个属性)。
• 并发事务带来的问题。
• 并发控制的方式(如何解决并发问题)
• 数据库事物的隔离级别介绍、举例说明。
• MySQL事务控制语句
• 数据库怎么保证数据的一致性。
♦ 锁的问题
• 如何并发访问数据库
• 说下数据库的锁机制,数据库中都有哪些锁。
• MySQL锁的粒度(即锁的级别)
• 乐观锁和悲观锁的概念,实现方式和使用场景。
♦ 命令问题
• truncate 与 delete 的区别是什么?
• SQL的授权语句和收回权限语句?
• 怎么新加一行记录,怎么添加一个列字段,修改列?
• Select Count(*)和Select Count(数字)以及Select Count(column)区别。
• EXISTS关键字的使用方法?
• 例题
• 判断表的字段值是否为空
♦ 索引问题
• 索引的优缺点
• 索引有哪些?
• 数据库索引的原理(实现)
• MySQL的B+树索引的优点?为什么不用二叉树?B-树和B+树为什么比红黑树更合适?
• 建索引的几大原则
♦ 存储引擎问题
• MySQL中Mylsam与InnoDB的区别,至少5点。
• 例题
♦ 其他问题
• 如果在数据库上进行误操作该怎么处理。
• 数据库在进行水平分表之后,SQL分页查询该怎么进行?分表之后想让一个id多个表示自增的,效率实现。数据库中的分页查询怎么写?
• 关系型数据库和非关系型数据库的区别
• 数据库连接池的原理?连接池使用什么数据结构实现?实现连接池?
♦ 操作系统专题
• 进程间的通信方式(IPC)?进程调度方法
• 线程间的通信方式?
• 线程同步的机制
• 操作系统由哪几部分组成?
• 用户态和系统态是什么时候进行切换的?64位操作系统和32位操作系统有什么区别和优点
• 选择一个你熟悉的磁盘臂调度算法进行简单描述
• 进程和线程的区别?
• 操作系统的换页方法
• 哲学家进餐问题的无死锁算法
• 操作系统的内存管理
♦ linux系统常用命令
• linux下如何检查服务器异常
• linux系统任务的后台运行和关闭、查看后台任务等
♦ TCP/IP相关的问题
• OSI 与 TCP/IP 各层的结构与功能,都有哪些协议,协议所占端口号。
• IP 地址的分类。
• 画出三次握手和四次挥手的图(状态转移图)。TCP 为什么三次握手,四次挥手?
• 为什么要 4 次挥手?
• 建立连接的第二个 syn 作用是啥?
• time_wait 状态产生的原因?
• 如果网络连接中出现大量 TIME_WAIT 状态所带来的危害?
• 如何消除大量 TCP 短连接引发的 TIME_WAIT?
• TIME_WAIT 的时间?
• 当关闭连接时最后一个 ACK 丢失怎么办?
• TCP如何保证可靠传输?
• TCP 建立连接之后怎么保持连接(检测连接断没断)?
• TCP 三次握手有哪些漏洞?
• 扩展:ddos 攻击的原理,如何防止 ddos 攻击?
• TCP 存在的缺陷有哪些?
• 三次握手与 accept()函数的关系?
• 在三次握手和四次挥手协议中,客户端和服务器端各用到什么函数(这里涉及到底层的 socket 知识)。
• listen 的真正目的?
• 如果客户端发起握手请求,服务端无法立刻建立连接应该回应什么?
• TCP 与 UDP 的区别(或各自的优缺点),以及各自的用途和使用领域。
• TCP 面向字节流,UDP 是面向报文的。
• TCP 只能单播,不能发送广播和组播;UDP 可以广播和组播。
• 为什么 TCP 比 UDP 安全,但是还有很多用 UDP?
• UDP 为何快?
• TCP 如何实现流量控制和拥塞控制。tcp 是怎么做错误处理的?
• TCP 滑动窗口协议,窗口过大或过小有什么影响?
• 说下 TCP 的黏包?
• TCP 头部有哪些字段?
♦ HTTP协议相关的问题
• Http 的请求报文结构和响应报文结构。
• 常见 HTTP 首部字段。
• Http 状态码含义。
• http 中有关缓存的首部字段有哪些?http 的浏览器缓存机制。
• Http1.1 和 Http1.0 的区别。(HTTP1.1 版本的 4 个新特性)
• 常用的 HTTP 方法有哪些?
• http 的请求方式 get 和 post 的区别。
• 为什么 HTTP 是无状态的?如何保持状态(会话跟踪技术、状态管理)?
• Http 的短连接和长连接的原理。
• HTTP 的特点。
• http 的安全问题。
• Https 的作用。
• 浏览器和服务器在基于 https 进行请求链接到数据传输过程中,用到了哪些技术?
• 讲下 Http 协议。
• http 和 socket 的区别,两个协议哪个更高效一点。
• HTTP 与 HTTPS 的区别。
♦ 安全相关的问题
• 攻击网站的方法和原理。
• 怎么确保数据传输过程中的安全性?
♦ Socket编程
• socket 编程的基本步骤(TCP/UDP)。
♦ 其他相关的问题
• Cookie 与 Session 的原理。
• Cookie 与 Session 的区别
• session 和 cache 的区别。
• 如果有几千个 session,怎么提高效率。当 session 访问量比较大的时候,怎么解决?
• 在浏览器中输入 URL 后,执行的全部过程。会用到哪些协议?(一次完整的 http 请求过程)。
• 域名解析
• 三次握手
• ARP(地址解析协议)
• 路由选择协议
• 建立 TCP 连接后发起 http 请求
• 服务器收到请求并响应 http 请求
• 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等)
• 断开 TCP 连接
• 浏览器对页面进行渲染呈现给用户
• 路由器与交换机的区别是什么?
♦ 链表专题
•
♦ 双指针专题
•
♦ 字符串专题
•
♦ 数学类专题
•
♦ 动态规划专题
•
♦ 二分类查找专题
•
♦ 哈希表专题
•
♦ 回溯专题
•
♦ 位运算专题
•
- 如何进行消息队列的选型
- 引入消息队列后如何保证其可用性
- 为什么消息队列里消费到了重复数据
- 发到消息队列的数据不见了
- 如何保证从消息队列拿到的数据按照顺序执行
- 几百万消息在小消息队列里积压了几小时
- 如果让你开发一个消息中间件,你会怎么设计架构
- 消息队列相关问题的面试技巧
- 分布式引擎架构是怎么设计的,为什么是分布式的
- 分布式搜索引擎写入和查询的工作流程
- 分布式搜索引擎在几十亿数据量级的场景下如何优化查询性能
- 你们公司分布式搜索引擎是怎么部署的
- 分布式搜索引擎相关问题的面试技巧
- 分布式缓存第一个问题
- redis线程模型,为什么单线程还是有很高的效率
- redis有哪些数据类型,分别在什么场景下使用比较合适
- redis过期策略,手写LRU
- 怎么保证redis是高并发和高可用
- 怎么保证redis挂掉之后再重启数据可以恢复
- redis cluster集群模式的原理
- 一般如何应对缓存雪崩以及穿透问题
- 如何保证缓存与数据库双写时的数据一致性
- redis的并发竞争该如何解决
- 你们公司生产环境的redis集群的部署架构是什么样的
- 分布式缓存面试题的回答技巧
- 为什么要把系统拆分为分布式,为啥要用dubbo
- dubbo的工作原理,注册中心挂了可以继续通信嘛
- dubbo都支持哪写通信协议以及序列化协议
- dubbo支持哪写负载均衡,高可用以及动态代理策略
- SPI是啥意思,dubbo的SPI机制原理
- 基于dubbo如何做服务治理、服务降级以及重试
- 分布式接口的幂等性如何保证,比如不能重复扣款
- 分布式系统中的接口调用如何保证顺序性
- 如何设计一个类似dubbo的rpc框架,架构上如何考虑
- zookeeper一般都有哪写使用场景
- 什么是分布式锁,对比redis和zk两种分布式锁的优劣
- 说说你们的分布式session方案,怎么做的
- 分布式事务方案,有啥坑
- 一般如何设计一个高并发的系统架构