2022届秋招Java后端企业面试真题汇总①
2022届秋招Java后端企业面试真题汇总② :https://www.nowcoder.com/discuss/818250
2022届秋招Java后端企业面试真题汇总③ :https://www.nowcoder.com/discuss/818255
第1家:阿里巴巴
1.HashMap的底层原理?
2.HashMap怎么扩容?
3.HashMap是线程安全的吗?
4.说一下ConcurrentHashMap?
5.Https和Http的区别?
6.ssl证书如果验证失败会有哪些原因呢?
7.访问一个网址时域名解析成ip的过程?
8.乐观锁和悲观锁知道吗?
9.乐观锁和悲观锁的优缺点和应用场景是什么?
10.Spring中AOP是怎么实现的?
11.Spring中Bean的初始化过程?
12.Spring中IOC? 平时自己写代码时有什么应用场景吗?
13.JVM的内存模型?
14.sleep和wait有什么区别?
15.Callable()和Future用过吗?
16.使用Callable()创建线程比另外两种方式有什么优势吗?
17.怎么调整堆的大小?要修改哪个参数?
18.设计模式:观察者模式?
19.用Linux命令统计一个文件中某个单词出现的次数?
20.用Linux命令查看当前有哪些进程在活跃呢?
21.用Linux查看文件有哪些命令?
22.less和more知道吗?
23.信号驱动IO和多路复用IO知道吗?
24.Redis有哪些应用场景?
25.你用Redis有哪些场景?使用的是哪些数据结构?
1.讲一下项目的结构和设计思路?(牛客社区项目)
2.项目中涉及到很多类和代码,这个类和代码的整个结构分层是怎么设计的?
3.在开发项目的过程中,你会把哪些功能放在Controller层?哪些功能放在Service层?你是怎么去判断的?没有Service层也可以讲所有代码放在Controller中啊
4.注册功能开发时,用户的密码是明文存的吗?
5.你刚才说密码后要添加一个salt盐值,这个是干什么用的?
6.slat盐值是怎么生成的?
7.md5加密有什么特点?
8.除了md5加密算法,还了解哪些加密算法?或者加密算法的一些特性?
9.什么是对称加密?什么是非对称加密?
10.如果要你自己设计一个加密算法,你有什么思路?
11.如果忘记密码了,修改密码功能怎么实现?
12.修改密码时,系统给用户发送邮件里面的链接,这个链接大概是啥样的?
13.登录功能中,在一段时间内免登功能是怎么实现?
14.cookie和session有什么区别?
15.在实际开发过程中,什么东西可以放cookie,什么东西可以放session?
16.如果客户端把cookie给禁用了,session还能用吗?
17.如果把cookie给禁用了?登陆后在网站里做了很多操作,操作过程中会缓存一些东西,如果把cookie给禁用了,有什么办法可以实现这些功能?
18.token是怎么传递的?
19.get和post请求有什么区别?
20.转发(foward)和重定向(redirect)有什么区别?
21.servlet的生命周期?
22.servlet是线程安全的吗?
23.servlet不是线程安全的,出现多线程访问该怎么处理?
24.你对线程安全的理解?
25.使用多线程的好处是什么?
26.是不是线程越多越好?
27.线程不是越多越好,那该创建多少线程合适呢?怎么确定呢?
28.怎么创建一个线程池?
29.如果让你实现具有缓存功能的线程池的类怎么实现?
30.volatile关键字的作用?
31.什么场景下会使用volatile?举个实际的场景?
32. volatile int a=1,写一个方法对a进行累加,这个方法是有多个线程去访问的,这样实现能保证线程安全吗?详细讲下为什么两个线程同时访问不能保证线程安全?(如果线程安全a应该为3,但是线程不安全就不会是3)
33.什么场景下会出现死锁?
34.怎么避免死锁?
35.sleep()和wait()方法的区别?
36.run()和start()方法的区别?
37.有一个文件,有很多人在读。并发读,没有影响,但是当一个人在写入文件时,不允许其他人写入,如果已经在写这个文件时,是不允许读,因为在修改过程中读的不是最新的,如果有人读的情况下,不希望有人能写,如果要实现这个功能,代码应该怎么去实现,去做多线程的控制?
38.String s = new String("abc"); 代码运行完在内存中存什么东西?s这个变量放在哪里呢?
39.new一个线程放在哪里?
40.Java内存中栈?
41.发生内存溢出可能的原因有哪些?
42.什么样的对象不能回收?
43.用什么方法决策对象是否能回收?
44.你写的项目中,数据库中设计了几张表?
45.表中有没有用索引?索引是怎么设计的?
46.数据库是怎么使用索引的?底层实现?
47.除了B+树查找算法,还了解其他的查找算法吗?
48.说下hashCode( )?
49.什么场景下会重写hashCode()?
50.SQL:表A和表B,如果同时插入一条数据,如果要保证事务的一致性,要么同时成功,要么同时失败,代码在JDBC中应该怎么写?
51.对数据库事务是怎么理解的?
52.数据库事务的隔离级别?
53.分别介绍下这几种事务的隔离级别的使用场景或存在的问题?
54.脏读和幻读的区别?
55.什么情况下会出现幻读?
56.SQL:有一张学生课程表,里面记录学生各门课程的分数,用一条SQL将每门课程的分数都大于80分,将这些学生都找出来?
57.在开发过程中用过到Java的反射吗?
58.你对Java反射的理解?
59.在Java命名规范中一般采用驼峰命名的方式,假设想基于反射做一件事,有一个包,包里面有很多类,找出命名不符合规范的类名、方法 名、属性名,怎么实现?
第2家:斗鱼
1.项目中哪个模块比较复杂?技术难点?(牛客社区项目)
2.使用Redis做缓存,缓存中的数据是怎么来的?
3.项目优化前QPS多少,优化后QPS多少?
4.用什么工具做的测试?
5.在什么环境下部署的,做的压测?
6.Jmeter是在哪里执行的?
7.压测时本地的配置是怎么的?
8.做性能压测在环境部署上要考虑哪些点?
9.如何保证缓存与数据库双写的一致性?这种方法有没有存在什么问题?
10.当并发量比较大时,先查redis中的缓存,redis中没有就去查mysql,并发量大时会不会出现穿透?
11.当并发量比较大时,面对缓存穿透问题,对于缓存空置这种解决方法,并发量大时,可能请求都直接穿透到DB中,有没有时序问题?
12.大致说下加锁的解决办法?
13.如果部署到多机,怎么解决加锁问题?
14.分布式锁有没有了解过?
15.点赞,关注功能怎么实现的?
16.热帖排行怎么实现的?
17.大致说下kafka的系统架构?
18.用七牛云做什么?
19.Java中HashMap的扩容因子为什么是0.75?
20.HashMap的扩容过程?
21.Java中常用的设计模式?
22.说一下工厂模式及使用场景?
23.Java中的类加载过程?
24.双亲委派模型?
25.有什么机制可以打破双亲委派模型?
26.序列化?反序列化?什么情况下会使用序列化?
27.SpringBoot中有个循环依赖的问题了解吗?
28.线程的生命周期?
29.线程之间的通信方式?
30.线程池说一下?
31.JVM的内存模型?
32.排查项目中的内存泄漏和内存溢出?
33.MySQL中执行SQL查询语句,mysql的server层的执行流程?
34.MySQL的隔离级别?
35.对Redis了解多少?
36.Redis怎么实现分布式锁?
37.Reids的String类型的底层实现?
38.web开发中怎么防盗链?
39.怎么处理跨域问题?
40.TCP3次握手,4次挥手?为什么要3次握手?不是4次,5次?为什么要4次挥手?
第3家:腾讯
1.简单的介绍一下项目
2.项目里面用了很多技术组件,选择技术组件时做过对比吗?比如为什么要用Redis做点赞、关注功能?
3.为什么不用关系型的数据库做点赞、关注?
4.为什么将点赞、关注都放入Redis中实现?
5.Redis有做容灾的考虑吗?
6.假设新增关注了一个人,修改的流程是怎样的?
7.新增一个记录,怎么去更新缓存和数据库?流程是什么?
8.一级缓存--本地缓存怎么处理?
9.用redis缓存登录凭证和验证码?
10.讲一下登录的流程?
11.在登录之前是要先判断是否有登录凭证的id吗?
12.打开网页后访问哪些业务需要登录?
13.密码是怎么存储的?
14.为什么要加slat值?
15.登录前校验登录凭证,要去查redis吗?
16.登录凭证存入redis中有设置过期时间吗?
17.“记住我”功能?
18.如果没有勾选“记住我”呢?
19.没勾选“记住我”将浏览器关了还能再登录吗?
20.HyperLogLog怎样实现统计UV的功能?
21.Bitmap怎样实现统计DAU的功能?
22.UV和DAU的区别是什么?
23.根据ip来统计,比如我在公司内部访问这个网站,所有人出口ip是一个?
24.UV统计的时间力度?指定时间范围进行统计?
25.假设选择一天,UV和DAU是一个值吗?
26.基于什么考虑去选择HyperLogLog和Bitmap这两种数据结构?
27.Bitmap的缺点是什么呢?
28.为什么不能用Bitmap统计UV?
29.可以举一个Bitmap的例子吗?
30.kafka在项目中是怎么用的呢?
31.为什么要用kafka?为什么不直接发送消息,而要用kafka发送?
32.Spring Security是怎么实现权限控制?
33.普通用户、版主、管理员这3个角色怎么跟用户关联?
34.如果要加一个审计员角色,要怎么加?
35.TCP三次握手,第三次握手的目的是什么?
36.如果没有第3次握手会有什么问题?造成什么现象?
37.假设协议设计是 客户端发一个请求,服务端回复确认,会出现什么问题?
第4家:Lazada
1.用英语介绍下自己的职业规划?
2.项目是怎么部署的?
3.Spring里面用了什么设计模式?
4.SpringBoot的初始化过程?自动装配原理?
5.缓存穿透、缓存击穿、缓存雪崩是什么?解决方案?
6.Redis集群?
7.你项目中的redis,一主几从,几个哨兵?
8.redis一主一从,三个哨兵,还是对外提供一个单点服务,这个时候引入3个master节点,每个master都有一个从节点,3个哨兵,这样组成一个redis集群?整体对外提供一个缓存服务,怎么设计缓存的key应该命中到哪个主节点上面?
9.浏览器输入一个url整个过程,有哪些协议?
10.TCP有什么特性?
11.流量控制是怎么实现的?
12.token?为什么要用token,不用session?token和session之间有什么优劣势?
13.session也可以存在redis中做集群存储啊?token也不需要存在服务端啊?只是做个校验?
14.说一下redis中存取token的流程?什么时候存,什么时候取?
15.token是怎么设计的?
16.token和session的区别?
17.==和equals?
18.如果对象存储在散列表中,要比较散列表里面的元素,还要做什么?
19.Java中的valatile和syncharonized关键字的区别?使用场景?
第5家:美团
1.进程和线程的区别?
2.进程的开销为什么比线程大?
3.进程和线程的通信方式有什么不同?
4.匿名管道和有名管道解释下?
5.多个线程同时访问一块内存会发生什么?
6.怎么保证线程安全?
7.说一下CAS?
8.怎么知道CAS中的要更新的值有没有修改呢?
9.为什么线程访问volatile的值是主内存中的值?
7.Java的锁有哪些?
8.公平锁和非公平锁?
7.非公平锁怎么实现非公平的?
8.自旋锁说一下?怎么实现的?有什么好处和坏处?
9.怎么实现一个锁?
10.死锁是怎么产生的?死锁的必要条件?解决方法?
11.Java的异常体系说一下?
12.Java内存模型?
13.为什么需要程序计数器?
14.有哪些垃圾回收算法?
15.“标记复制”算法要浪费一半空间,为什么还要使用这种算法?
16.怎么判断一个对象为垃圾?
17.有哪些对象可以作为GC roots?
18.TCP和UDP的区别?
19.有哪些网络协议?
20.TCP是怎么保证安全性的?
21.TCP是怎么建立连接的?为什么要有最后一次握手?
22.TCP的超时重传说一下?
23.HTTP的状态码有哪些?
24.Spring说一下?IOC和AOP?
25.Spring是怎么解耦的?依赖是怎么注入的?
26.SpringMVC说一下?
27.MySQL事务的特性?解释一下什么是一致性?
28.MySQL的脏读、幻读是什么?
29.什么时候会出现幻读?
30.事务的隔离级别?
31.串行化级别是怎么实现的?
32.MySQL的索引?
33.聚集索引和非聚集索引的区别?
34.kafka说一下?怎么削峰的?
35.Redis是怎么实现的?
36.解释一个IO多路复用机制?redis采用哪种方式实现的?
37.编码:写一个死锁?
38.编码:写一个双重校验单例模式?解释一下细节?为什么要进行二次判单是否为null?volatile?
2.在项目中遇到哪些挑战?
3.怎么让一个帖子成为一个热帖,又怎么从缓存中命中这个帖子
4.出来redis还有没有调研过其它方案用来存储登录凭证和验证码?
5.在学校做过什么项目?
6.你作为什么角色去参与这个项目的?
7.介绍下TCP协议?
8.怎么保证TCP传输的可靠性?
9.流量控制是通过什么去控制的呢?
10.拥塞控制是怎么实现的?
11.TCP和UDP的使用场景?
12.UDP有什么特点?
13.HTTP常用的方法?
14.get和post的区别?
15.get和post哪个能够缓存?
16.HTTP和HTTPS的区别?
17.HTTPS通过SSL加密,加密的过程是怎么样的呢?
18.HTTPS检查公钥是通过什么方式检查的?
19.CA证书起什么样的作用,证书是什么时候出现的?
20.假设去攻击一个HTTPS的请求该怎么去攻击?
21.有了解中间人攻击吗?
22.DNS解析过程?
23.DNS解析发生在什么阶段?
24.通过什么方式解决DNS劫持问题?
25.线程和进程的区别?
26.进程之间是怎么通信的?
27.进程之间通信有用过吗?
28.怎么保证线程安全?
29.这几种保证线程安全的方式有什么区别?
30.Java面向对象的特性
31.Java面试对象的5大原则?
32.单一职责原则是什么?
33.开闭原则是什么?
34.Java内存模型、JVM内存模型
35.什么是内存泄漏?
36.什么是OOM(内存溢出)?
37.GC垃圾回收机制?
38.数组和链表的区别?
39.栈和队列的区别?
40.怎么用栈实现队列?说思路
41.算法:链表中的节点每k个一组翻转?
42.对未来的规划?
第6家:新东方
1.JVM内存分布?(JDK1.7和JDK1.8的区别?)JDK1.8 里面有方法区吗?
2.垃圾回收器有哪些?
3.CMS和G1的垃圾回收过程?
4.CMS中那个阶段会stop the world?
5.GC Roots包括哪些?
6.垃圾回收怎么解决跨代引用问题?
7.CSM用的哪种垃圾回收算法?
8.G1用的哪种垃圾回收算法?
9.标记-清除和标记-整理有哪些优劣势呢?
10.为什么CMS要用标记-清除,不用标记-整理算法?
11.了解哪些设计模式?
12.说一说观察者模式?及应用场景?
13.单例模式的应用场景?
14.静态类和单例模式的区别?
15.常见的数据结构有哪些?
16.队列和栈的区别?及应用场景?
17.排序算法?
18.快排和冒泡排序的区别?
19.快排时间复杂度为什么是个O(nlogn)?
20.怎么去看一个算法的时间复杂度?
21.Java中的集合类?
22.HashMap的底层数据结构?
23.HashMap的扩容过程?
24.红黑树是怎么树?
25.红黑树的其他的应用场景?
26.介绍一下kafka?
27.介绍一下ElasticSearch?
28.redis实现点赞和关注功能具体说一下?
29.说一下你了解的多线程的知识?
30.你自己的职业规划?
第7家:京东数科
1.介绍一下项目?(牛客社区项目)
2.SpringBoot用的哪个版本,是1还是2?
3.SpringBoot和Spring的区别?
4.Spring中的IOC?
5.IOC的底层是怎么实现的?
6.kafka在项目中是怎么用的?
7.为什么要用kafka?
8.kafaka架构?
9.数据在kafka中消息是有序的吗?
10.MySQL用的是哪个版本?用的哪个引擎?
11.InnoDB和MyISAM的区别?
12.常用的数据结构?
13.这些数据结构有什么区别?
14.数组的查询为什么快?链表的插入删除为什么快?
15.数组的查询、插入/删除的时间复杂度?
16.排序算法? 时间复杂度和空间复杂度?
17.简单的描述下快排过程?
18.常见的设计模式?
19.单例模式有几种?
20.双重检验单例模式?
21.工厂模式的使用场景?在哪里使用过?
22.说一下观察者模式?
23.Java内存模型?
24.数据库中的多表连接有哪几种?有什么区别?
25.数据库中in 和exists 的用法的区别?
26.Linux用的多吗?用过哪些Linux命令?
27.有1亿一个数字,给出只能装下100个数字的内存,求top5?说下思路?
第8家:阿里健康
1.描述一下项目的登录过程?(牛客社区项目)
2.登录凭证里面包含什么?
3.为什么要用Redis存储登录凭证?
4.使用Redis存储登录凭证有哪些性能提升?
5.登录凭证怎么使用?利用userId,是不是要先从数据库中去查询用户?
6.当登录成功后,访问另一个需要登录的页面时,需要通过Redis获取登录凭证,key是什么,从哪里来?
7.说一下关注功能?
8.关注时的数据存储在哪里?是全部存储在Redis中吗?有没有做持久化?
9.关注功能所使用Redis的数据结构是什么?
10.当A关注了B,在Redis中存几条数据?
11.为什么要用zset实现关注功能?
12.关注时,关注的数量有上限吗?
13.关注功能的数据存储在Redis中做了持久化吗?Redis宕机后,数据怎么保存?
14.如果考虑Redis数据持久化该怎么办?
15.Redis持久化方式RDB和AOF各有哪些优缺点?
16.搜索功能是怎么实现的?
17.热帖排行怎么实现的?
18.确定帖子分数规则是什么?
19.定时任务是为了解决什么问题?
20.JVM的内存模型?1.8之前和1.8之后
21.JDK1.8除了方法区改为元空间其它的一样吗?
22.栈什么情况下会发生内存溢出?
23.Java虚拟机栈在什么情况下线程请求栈的深度超过当前Java虚拟机栈的最⼤深度?有什么典型的场景会发生这种情况?
24.垃圾回收算法有哪些?
25.Java的集合Collection下面还有哪些接口?
26.list和set的区别是什么?
27.set是怎么保证元素不可重复?(hashCode和equals)
28.Map集合有哪些?
29.HashMap和ConcurrentHashMap有什么区别呢?
30.ConcurrentHashMap底层是怎么实现安全性的?
31.ConcurrentHashMap中get操作在1.7和1.8都不需要加锁?
32.Java的线程和操作系统的线程是什么关系?
33.Java的线程池的核心参数有哪几个?
34.核心线程数、最大线程数、队列三者之间的关系?
第9家:百度
1.项目介绍
2.什么是token?
2.cookie和session的区别?
3.TCP和UDP的区别?
4.TCP的拥塞控制算法
5.HTTP、DNS、TCP、UDP、IP是哪一层协议
5.HTTP1.1、HTTP2.0、HTTP3.0有什么区别?
6.Java中Object中有哪些方法?
7.==和equals()有什么区别?
8.什么是多态?
9.使用多态有什么好处?为什么要有这种方式?应用场景?
10.接口和抽象类有什么相同点和不同点?
11.接口里面一定有抽象的方法吗?
12.抽象类中一定有抽象的方法吗?
13.创建线程的方式?
14.线程的状态有哪些?状态之间是怎么切换的?
15.Java中有哪些线程池?
16.线程池的拒绝策略有哪些?
17.在项目中用到过线程池吗?
18.为什么选用CallerRunsPolicy这种拒绝策略?
19.什么是不可变类?
20.String不可变有什么好处?
21.MySQL中怎么分页查找?
22.如果数据量很大的情况下上亿条,还能用limit这种方式进行分页查找吗?
23.如果要实现在大数据量的情况下的分页,该怎么设计?
24.如果一个MySQL表中有 a,b,c,d,e 5个字段,在a,b,c,d四个字段上建立联合索引。
如果在查询时where a=1 and b=2 and c>3 and d=4;会走哪些索引?
25.聚簇索引和非聚簇索引的区别?
26.Spring、SpingMVC、SpringBoot之间的关系?
27.写一个单例模式?
29.算法:有一个正整数的数组,求组合得到的最大值?
第10家:京东方
1.Java常见的数据类型?
2.JVM的内存模型?
3.双亲委派模型?
4.类加载器种类?
5.垃圾回收算法有哪些?
6.怎么创建线程池?
7.HashMap的底层原理?
8.MySQL的事务隔离级别?
9.MVCC的原理?
10.Redis的常用的数据结构?
11.Redis一致性hash算法?
12.Redis的过期删除策略?
13.TCP/IP四层模型?和OSI七层模型?
14.TCP三次握手过程?
15.浏览器中输入一个URL的过程?使用了哪些协议,经过了哪一层?
16.HTTPS的工作原理?
17.Spring中用到了哪些设计模式?
18.JDK动态代理和CGLIB动态代理有什么区别?
19.Kafka消息不重复消息?怎么保证消息不丢?
20.全局id怎么生成?
21.微服务常用的组件?
22.分布式锁怎么实现?
23.平时还关注什么前沿技术?
24.进程调度算法?
25.进程间的通信方式?
26.反问?