秋招结束,已经获取京东,拼多多,OPPO,小米,华为,阿里Offer。这次不多说太多,分享下Java面试的一些高频问点面经,希望对还在找工作的朋友有所帮助!不要私藏哦,可以转发朋友圈让给身边的朋友参考参考哈哈哈哈!

计算机网络

这些问题是最常见,感觉基本上也就会问这些。

  1. OIS参考模型,每一层涉及到了哪些协议,每一层负责了什么?

  2. 最重要的就是传输层,这一块一定要好好看

  3. TCP的特点是什么?什么是窗口滑动协议,什么是快速重传,什么是拥塞避免,什么是慢启动?怎么做到可靠数据传输?

  4. TCP的流量控制是什么?如果RcvWindow=0应该怎么办?

  5. 有哪几种定时器?作用分别是什么?

  6. TCP和UDP的区别?什么场景使用TCP,什么场景什么UDP?哪些应用层协议使用了TCP,哪些使用了UDP?UDP要实现可靠数据传输应该怎么做?

  7. TCP的三次握手和四次挥手?为什么是三次,为什么是四次?为什么TCP采用随机初始***?客户端和服务器最多能发送和接收多少TCP连接数?(最后一个问的较少)

  8. 如果TCP连接的时候服务器发送的最后一个报文时,客户端挂了会怎样?那如果服务器宕机了,客户端怎么处理?

  9. TIME_WAIT 和 CLOSE_WAIT 状态?TIME_WAIT 为什么需要保持 2MSL 这么长的时间?大量TIME_WAIT造成的影响?如何尽量处理 TIMEWAIT 过多?

  10. TCP粘包(问的较少)

  11. 影响TCP 网络时延的因素

  12. 当你输入域名访问一个网站的时候,背后的过程是什么涉及到哪些协议?

  13. 什么是https协议?https协议用到了哪种**?

  14. 什么是有状态什么是无状态?

  15. HTTP的八种请求?GET和POST的区别?

  16. HTTP的一些常见的状态码要熟悉!重定向和转发的区别?

  17. HTTP和HTTPS的区别?HTTP1.0和HTTP1.1的区别?

  18. HTTPS的工作流程?

  19. Cookie,Session,Token的区别

  20. SSL加密的过程?延伸出对称加密和非对称加密的过程和区别

  21. DNS协议!域名解析过程,递归查询和迭代查询的区别?

  22. Ping命令的过程和ARP协议(这个做了解就好了)

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

操作系统

这个是比较惨的,但是一般问的不深。

  1. 进程和线程的区别是什么?进程和线程占有的资源是哪些?

  2. 操作系统创建进程的过程?进程的状态和控制原语?Java的Runnable对应着哪些操作系统状态?还有哪些控制函数像sleep,notify这些改成成什么状态了?

  3. 进程间通信!为什么需要进程间通信?线程通信?

  4. 进程同步和进程互斥。实现临界区互斥的基本方法?

  5. 如何正确的停止一个线程!

  6. 中断和异常

  7. 进程隔离,虚拟内存,虚拟地址空间

  8. 多线程、多进程的区别及适用场景

  9. 什么是缓存?有哪些缓存的更新算法?

  10. 用过的Linux命令,常用:看被占用的端口的进程;查看一个进程的端口号;显示CPU的信息 ,查看CPU使用率;查看所有进程;查看进程的详细信息;查看内存使用情况等等

  11. 僵尸进程,孤儿进程以及守护进程?怎么创建一个守护线程?僵尸进程危害以及避免僵尸进程的方式!

  12. 进程调度算法以及死锁!产生死锁原因;产生死锁的条件;处理死锁的几种条件;银行家算法

  13. 操作系统的特征(这个最基本,但是一次面试我不知道)

数据库

  1. 数据库的事务,事物的特性,事务的隔离级别分别解决了哪些问题,理解什么是脏读,幻读! 事务的实现原理通过什么要保证的事务的特性?

  2. 什么是左连接,什么是右连接,什么是全连接,什么是内连接?

  3. 数据库的索引有什么作用?用什么来实现的?好处坏处是啥?

  4. 索引的种类,原理,索引存了哪些内容,什么时候索引会失效?唯一索引和主键索引的区别!单列和联合索引,最左匹配原则,什么时候该用联合索引?

  5. 怎么看这个表是否加了索引?

  6. B树和B+树有什么区别?为什么索引不用B树?那B+树的叶子结点上存了哪些信息?

  7. 数据库的锁?乐观锁悲观锁,共享锁和排它锁。

  8. MySql中主要使用的引擎,它们主要的区别是啥。

  9. 数据库范式

  10. 数据库五大约束?

  11. 数据库连接池:工作原理,参数,种类,会出现的问题

  12. 数据库的读写分离,数据切分(数据库分库分表,水平切分垂直切分啊)

  13. 数据库的主从:实现原理,mysql主从复制的方式,如何配置主从同步,主从同步会出现的问题

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

数据结构和算法

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

Java知识

Java知识要准备的太多了,很多细节,我就捡着说一些都是我自己汇总的一些

Java 基础

  1. Java和c++的区别(第一次被问我说的很糟),Java为什么跨平台?

  2. Java语言的特点和特性(第一次我也回答的很糟),多态的底层原理?

  3. 抽象类和接口的区别?抽象类与普通类的区别?

  4. Java访问修饰符有哪些?

  5. this关键字和super关键字?

  6. Object类下面的方法,尤其是hashCode方法和equals方法?

  7. == 和 equals 的区别是什么?若对一个类不重写,它的equals()方法是如何比较的?int 和Integer的比较!

  8. Java基本的数据类型?

  9. String为什么不可变?好处在哪?String 常量池?String, Stringbuffer, StringBuilder 的区别。

  10. static关键字(第一次问我忘了都不知道)和final关键字

  11. ArrayList 和 LinkedList 区别?三种方式访问集合中的元素,ArrayList遍历删除会出的问题?Foreach原理以及Fail-fast机制!

Java泛型

  1. Java反射:反射的好处;得到class的方式;反射的原理

  2. Throwable、error、exception的区别?异常的种类!

  3. Java创建线程的四种方式?线程实现callable接口和runnable接口的区别?线程中start和run的区别?

  4. sleep(),wait(),yield()和join()方法?sleep()与wait()的区别?

  5. Java是值传递还是引用传递

  6. Java的null类型?java创建对象时,new 出一个对象 和 = null的区别?空串与null串?

  7. Java中创建对象的5种方式?

  8. 为什么会出现 4.0-3.6=0.40000001 这种现象?

  9. HashMap,HashTable,CourrentHashMap:

  10. HashMap的底层实现,put,get过程;

  11. 如何解决Hash碰撞的;(延伸出Hash冲突的几种解决方法)

  12. HashMap的初始化容量为什么为2的次幂?

  13. 为什么HashMap是非线程安全的?

  14. HashMap和HashTable的区别?

  15. 为什么HashMap长度大于8才转换为红黑树,而不是6?

  16. HashMap和TreeMap比较?

  17. HashMap,HashTable,CourrentHashMap的key和value是否可为null?那为什么这么设计?

  18. CourrentHashMap为什么是线程安全的?(引出Java线程安全,Volatile关键字,CAS这些)

  19. 并发编程的的三个概念(特性)?为什么会有Volatile关键字?volatile关键字的两层语义!!Volatile底层原理!!

  20. 什么是线程安全?产生线程不安全的原因是什么?Java线程安全的类?

  21. Java线程安全的类:公平锁/非公平锁;可重入锁;独享锁/共享锁;乐观锁/悲观锁;自旋锁等等

  22. synchronized关键字:三种应用方式;为什么能实现实现内存可见性;底层原理是啥?

  23. ReentrantLock关键字:实现原理;CAS原理以及CSA的问题

  24. synchronized和ReentrantLock的异同以及Synchronized修饰静态方法和成员方法的区别?

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

线程池

  1. 线程池的好处?

  2. 基本组成部分?

  3. Java中的ThreadPoolExecutor类!线程池涉及到的参数!

  4. 线程池的状态?

  5. 线程池任务执行流程!!

  6. 任务缓存队列及排队策略,如何自定义拒绝策略?

  7. 线程池的种类?

  8. 配置线程池大小,根据CPU密集和IO密集划分

  9. 阻塞队列以及生产者消费者的实现

  10. 内存泄漏和内存溢出,常见的内存泄露(介绍一下HashMap泄露的场景),避免内存泄漏的几点建议?如何定位找到内存泄漏!!

  11. ThreadLocal介绍,实现原理!!ThreadLocal是如何做到为每一个线程维护变量的副本的呢?ThreadLocal和同步机制的区别。

  12. 设计模式的单例和工厂是面得最多的!单例的几种实现方式,一般写典型的双重检查锁定,因为会延伸出volatile,线程安全这些。

  13. 然后就是饿汉式,线程安全为什么不用这个方式呢,简单又线程安全?然后是抽象工厂模式和工厂方法模式区别?JDK或者Spring当中哪里用了设计模式?

JVM:

  1. Java内存模型?JVM内存结构?内存模型和内存结构的联系?Java对象结构?

  2. JAVA虚拟机内存划分?每个区域分别装着哪些东西

  3. 为什么要划分?

  4. 堆的划分,为什么要设置两个Survivor区?新生代 Survivor 空间不足怎么办?年轻代的几个参数?

  5. 一个对象从创建到销毁都是怎么在这些部分里存活和转移的?

  6. Java中new对象干的几件事?

  7. Java四种引用状态?

  8. 类加载的过程?类加载基于的机制?为什么要双亲委派?为什么需要破坏双亲委派?自己写个String能加载吗?类初始化时机?

  9. 对象的创建的过程?

  10. GC算法与垃圾回收!为什么需要垃圾回收以及什么时候GC?GC涉及到的内存部分?对象存活判断的几种方式?

  11. 说一下你了解的几个垃圾收集器

  12. JVM初始化步骤

  13. JVM调优(这个比较少)

  14. Java 虚拟机栈会出现的两种异常?

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

项目

Redis:

  1. Redis是什么,用在哪?Redis 的缺点?

  2. Redis是单线程的为什么速度那么快?那它为什么弄成了单线程的?

  3. Redis和memcache有什么区别?Redis和MySql的区别?

  4. Redis 支持的数据类型有哪些?用在什么场景?它的底层数据结构是啥?Zset底层为什么要用两个数据结构?

  5. Redis的并发竞争问题如何解决?

  6. Redis的缓存穿透,缓存雪崩,缓存击穿?怎么解决?

  7. 怎么保证缓存和数据库数据的一致性?

  8. Redis有哪些数据淘汰策略

  9. Redis持久化方式!!

  10. Redis集群!集群是如何判断是否有某个节点挂掉?集群进入fail状态的必要条件?

  11. Redis哨兵

  12. Redis主从复制和一致性保证!

  13. Redis热key问题

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

Spring:

  1. 这一块问的比较少其实,但是IOC和AOP问的很多

  2. SpringBoot的启动和运行原

  3. IOC和AOP原理?

  4. Spring生成代理对象

  5. BeanFactory 和 FactoryBean 的区别

  6. Spring各个注解的作用?注解的原理?

  7. 哪些bean会被扫描?Bean的生命周期!!

  8. Spring 实例化 Bean 的过程。

  9. Spring 直接注入和直接new一个对象有什么不同?

  10. Spring事务管理:事务原理?事务管理接口?实现方式!

  11. Spring解决对象相互依赖

Kafka:

  1. 优点和缺点?和传统的MQ对比有什么区别?

  2. 为什么 Kafka 吞吐量高

  3. 一些概念像broker,topic,partition这些

  4. partition 删除策略

  5. 写入可靠性保障(分布式一致性问题)

  6. 两种消费模式

  7. kafka消费者消费消息的流程

  8. kafka 如何保证消息有序

  9. 消息丢失场景:如何防止数据丢失,消息重复解决方案

  10. 主节点选择方案

  11. 个人不同项目会问的:(高并发)

  12. 如何解决超卖少卖?

  13. 你自己重新设计一下,一个高并发,你要怎么应对

  14. 单用户订单存Hash,那一个用户下了很多单怎么办?

  15. 减库存然后下订单,但是服务器宕机?

  16. 负载均衡实现方式,策略?

  17. 限流主要的算法?令牌桶算法的缺点在哪?(导致不公平性)

最后

以上面经解析整理

关注公众号:“程序员白楠楠”获取!

秋招收工,获京东/拼多多/华为/阿里Java岗offer,总结“我”的面经

相关文章: