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

秋招结束,已经获取京东,拼多多,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协议(这个做了解就好了)

image

操作系统

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

  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主从复制的方式,如何配置主从同步,主从同步会出现的问题

image

数据结构和算法

image

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修饰静态方法和成员方法的区别?

image

线程池

  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 虚拟机栈会出现的两种异常?

image

项目

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问题

image

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,总结我的面经)