2022年⼩红书最新Java⾯试题-⼀⾯
⼀⾯
-------------------------------开场------------------------------
1、介绍⾃⼰
2、介绍项⽬以及⾃⼰负责的哪些模块
3、技术上有什么难点
4、内存队列的使⽤场景
– 1.异步 2.解决并发
-------------------------------技术------------------------------
1、并发三⼤性
2、什么是可见性
我引出了JMM
3、什么是有序性
— 我引出了指令重排序,并且说什么时候需要指令重排序,说了cpu的空间局限性每次读取的时候都是读取连续的命令
属于input控件的有哪些4、happens-before
5、如何保证线程安全
– ⼀⽅⾯加锁;另⼀⽅⾯⽆锁:⽐如cas、内存队列;threadlocal线程间共享(也没有追问啥是threadlocal)、sleep(这种⽅式不好)6、并发不安全的本质原因,就是说什么时候多线程并发是安全的?
– 我回答:是否访问临界资源
7、synchronized可以修饰哪些地⽅?(我只回答了修饰代码块和⽅法,⾯试官问还有吗?)
– 链接 修饰代码块、⽅法、静态⽅法、类
8、synchronized修改静态⽅法和⾮静态⽅法的区别?
– 链接 就是类锁和对象锁的区别
9、hashmap是线程安全的吗?
为什么没有php培训了– 回答不是
10、arraylist是线程安全的吗?
– 回答不是
html代码基础知识11、那如何让arraylist是线程安全的
– 回答vector。⼜追问还有吗?回答copyonwritearraylist。
12、⼜追问copyonwritearraylist底层实现原理是什么?
– 不知道
13、hashmap保证线程安全类是什么?
– concurrenthashmap。追问底层实现原理,我分别为1.7和1.8说了。后续没有追问具体实现逻辑
14、hashmap什么时候线程不安全?
– 我回答1.7是因为扩容的时候出现环形链表;1.8线程不安全的地⽅需要补充;
15、问了如何指定MySQL⾛没⾛索引?
– explain,type类型
16、索引数据结构类型
17、b+树的优势
18、为什么不⽤⼆叉树?
– IO磁盘查询次数⾼,性能低
19、公司rpc的框架
– ⽤的http
20、追问http和rpc的区别
tokenizer return tensors pt– 回答了:http可以跨语⾔,rpc只能双⽅都⽤dubbo;
追问他俩本质区别是什么? (没有回答出来)
–http是指从客户端到服务器端的请求消息,rpc是远程过程调⽤协议
链表具有的特点是21、系统设计有做过吗?就是⼀个模块从头开始设计
– 回答需要对业务⾜够的熟悉,才能⽤技术解决问题
22、公司中使⽤消息中间件吗?
23、kafka中有什么重要的组件,kafka的架构是什么样的?
24、kafka基于zookeeper⼲了什么?
– 回答kafka⽆状态节点,都是注册到zookeeper中的
– 回答kafka⽆状态节点,都是注册到zookeeper中的
25、kafka如何保证消息不丢失
– 1.回答了先开启⽣产者发送两个消息再开启消费者,这两个消息不会被消费,⾯试官问为什么会丢数据我回答可能是因为消费者启动的时候偏移量不是从头开发的,被⾯试官否认:如果实际⽣产中,谁先谁后开启说不准的。然后我⼜说有个参数可以设置从头开始消费 2.⽣产者的ack 3.消费者⾃动提交
26、公司这边的MySQL事务隔离级别是什么
27、可重复读和读已提交的本质差别在哪?为什么⼜读已提交还需要可重复读
– ⾯试官说读已提交,明明解决了并发下可见性的问题,为什么还需要添加⼀层可重复读?
28、让你设计⼀套秒杀系统,你需要从那⼏个⽅⾯设计?
– 1.物理机器内存 2.垃圾回收器 3.jvm参数
29、货很少,请求量有很多,那么如何保证这些货不会被超卖?⽐如10件货,扣减到了-2、-4;
⼜补充说⽐如100万的请求,分别给10个tomcat(集部署),每个tomcat处理10万个请求,且10个tomcat都会访问库存。
– 分布式并发安全问题。我回答加锁。(弄了半圈,灭有直接问我分布式锁,⽽是让我主动想到分布式锁)
追问有哪些分布式锁?
— redis、zookeeper、MySQL实现
30、⼀个redis可以抗住多少QPS?
31、redis实现分布式锁的原理、命令?
— setNx。
mysql面试题学生表32、秒杀系统100万的请求量,本来需要10台机器可以抗住,但是只有两台机器,那么如何抗住100万请求不让这两个机器挂掉?
— 限流。使⽤nginx、histy、sentinel秒杀系统
33、秒杀系统100万的请求,如何防⽌⽤户薅⽺⽑,就是防⽌⼀个⽤户通过其他软件抢了所有的商品?
回答记录⽤户id
追问还有其他⽅案吗?
– 不知道。秒杀系统
34、来个编程题,我说没有刷过,他就让我写个死锁吧,; 问我来京东之前没有刷过题吗,我说当时只让说思路;
问我产⽣死锁,会不会让主线程阻塞,我说不会,他说那如何才能让主线程阻塞呢?我使⽤了join。
35、如何排查死锁
– jstack。追问具体命令,回答忘了
36、问了⾯试官业务这块

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。