两年Java面试记录和心得

背景:

         本人是2019年大学毕业,因为校招时收到了体面厂的offer,实习+工作都是在体面厂的,加起来也有两年的开发经验了(2021年),基于自身发展考虑,觉得需要换一份工作了,下面整理了一下我面试时,面试官问到的问题,给其他要找工作的人一些参考,并且,后续我会将自己整理的知识点进行整理,发到博客上。

浙江新再灵

一面: 
这个平台是你们自己运营的,还是怎么说
你是怎么使用rabbit mq保证的分布式事务
你负责的是电子围栏模块,这个电子围栏是设备还是什么东西?
终端设备的数量,支持的最大的车载的设备数?
车辆上报GPS数据的频率?
压力测试时,最大支持多少台设备?
车辆监控平台有哪些服务,你主要负责的是哪些模块?
你是怎么使用多线程来提升围栏分析服务器的性能的?
你项目中使用到了Spring cloud,能说一下使用到的组件及其作用?
GPS的分表规则是什么?
跨多表查询是怎么处理,怎么解决查询性能?
整个分表是怎么写的,是自己写的,还是使用的框架?
查询近一个月的某一个车辆是否是违规行为,那你岂不是要联合30个表进行查询,那你是怎么处理?
查询的性能优化,如果不进行性能优化的话,那查询效率会很慢的啊,因为要关联30个表,你是怎么做的?
你是使用的哪个Spring的扩展点,进行跨线程的日志处理?

税友

税友一面:
jvm运行时数据区,存放的内容
hashmap
线程安全的map
类加载器有哪些,一个类加载器如何加载类的(类加载机制)
为什么要使用这样的加载机制加载类,不使用行不行?
tomcat是使用这种类加载机制吗?
你对于spring的扩展点如何扩展的?
spring aop所使用的设计模式?
你项目中使用多线程编程的场景?要突出在项目中如何使用的?
你项目使用redis的场景,使用到了哪些数据结构?
你在做这个项目时最大的成就是什么?
你这个项目的开发周期?你做这个项目多久了?  
如果前方技术支持反映系统运行比较慢,那么你该如何处理(系统反应慢的处理)?
这个一致性是你想出来的吗?
你项目中定时任务是怎么处理的?xjob公司内部开发的,他的运行流程?
项目每秒处理的请求数是多少,也就是并发量?
rabbit mq保证分布式事物在项目的使用场景,为什么要用?不用行不行?

端点科技

端点一面
spring生命周期
动态代理的区别
你项目怎么使用的分布式事物?
那你这整的,你是怎么理解分布式事物的?
你这个一致性hash怎么用的?
hashmap多线程情况下扩容会出现什么问题?
reentrantlock和synchronized的区别?
用户态和内核态,为什么需要切换?
线程池使用过没?
线程池的参数?

端点二面
介绍一下你的项目?你负责的模块?
详细介绍一下电子围栏模块?
根据GPS数据的经纬度,判断是否在指定区域里面,这个是怎么实现的?
如果让你实现,那么该怎么做?
刚才是业务层面的介绍,能从技术层面介绍一下你项目使用的技术吗?
你项目中使用到了一致性hash,能讲一下什么是一致性hash吗?
一致性hash在你项目中所起到的一个作用?为什么要用这个一致性hash?
如果不使用一致性hash的话,应该怎么样?
mysql和PG的区别?
他们之间的分表有什么不同的?
为什么使用postgresql,不使用mysql?
那他们之间有使用区别呢?
postgresql做分表处理的时候,和mysql做分表有什么区别?
你这个基于Spring扩展点进行跨线程操作日志记录怎么做的?
刚才你说是基于AOP进行的?那么你的切点的放在哪里的?
环绕通知是什么?
Spring AOP是怎么出入的,也就是怎么完成的AOP代理?
那你能具体讲一下怎么基于cglib进行的动态代理?
项目的总人数?

菜鸟网络

菜鸟一面
项目介绍,你主要负责哪一部分?
项目中遇到的问题?怎么解决的?
你说你使用到了zookeeper解决这个问题,那么你有没有对其他的技术方案进行选择,还是说对于自己的认知,就选择了zookeeper?
为什么使用Rabbit MQ来接收GPS信息?为什么不用kafka接收呢? kafka吞吐量还高?
还是说基础组件就是基于rabbit mq?
MQ消息丢失问题怎么处理?
如要要保证消息不丢失呢?
和kafka,rocket mq进行了对比吗?
你对于Spring的话,是怎么进行二次定制的?
看过哪部分的源码?
你项目中是怎么使用redis的?
那你怎么保证redis和数据库的数据一致性?
那如果是redis先更新数据库成功,删除redis失败了?
如果是金融行业呢?对redis要求比较高,那你怎么办?
没有简单一点的方法?
延迟双删也可能有问题啊?
你项目中使用多线程编程的场景?要突出在项目中如何使用的?
线上有没有遇到过OOM问题?怎么解决的?
应该怎么避免OOM问题?
你在项目中处于什么位置?任务分配人员?还是说任务执行人员?
你在设计表时,需要考虑的原因是什么?
对于建立索引的是,应该怎么建立索引?在哪些字段上建立索引?
一个表中建立索引的个数限制?  对于大字段建立索引的长度?

菜鸟二面
nginx负载均衡算法有哪些?
mybatis的一级缓存和二级缓存说一下?使用场景?
redis他的数据类型和底层数据结构的实现?
分表的处理?按什么纬度进行分表?如果我有个需求,需要查询多个表的满足条件的记录?
如果这个字段不是id,而且一个普通字段,那么该怎么查询?
对于你业务中,围栏分析服务器集群中,可能存在服务器他的硬件设备不同,导致处理消费的能力也不同,那如果我想让每台服务器服务的消息数差不多,也就是每一台服务器都让他每秒消费60秒,做到均匀消费,那你该怎么样?

菜鸟三面
数据转换,从数据产生到最后处理的流程说一下?
接受到的数据是结构化的数据吗?
如果mq宕机了怎么办?
项目的难点?

滴滴

滴滴一面   
跨线程日志记录怎么做的?
你说你要了threadlocal,说说他的作用?实现原理?
Spring bean的声明周期
java集合,线程安全的map
CurrentHashMap说一下怎么保证的线程安全?
put的流程?
redis你在项目中怎么使用的?用在哪个地方?解决了什么问题?
怎么保证redis和数据库的数据一致性?
先更新数据库,再删除缓存会有什么问题?
如果对于一致性要求高怎么处理?
有没有想过redis中zset是使用skiplist进行实现的?那他为什么不使用像数据库那种的树形结构进行实现?
mysql的优化?查询的优化,遇到查询慢该怎么解决?
如果加了所有,查询也走了索引,可是查询还是慢,那是怎么导致的? 怎么解决?
你们分表的维度?
如果想要跨表查询怎么查询的?
你们使用的是rabbit mq,什么使用这个?有没有和其他的mq进行对比?
如果数量太大,导致服务器宕机了,那你该怎么处理?

菜划算

菜划算一面
String字符串的最大长度是多少?
synchronize的原理说一下?
HashMap的原理说一下?
线程安全的map有哪些?
CurrentHashMap保证线程安全的原理是哪些?
java内存模型?
类加载机制?
为什么要这样加载类?
常见的垃圾收集器?
CMS和G1的区别?
IO模型都有哪些?
redis为什么这么快?
redis的使用场景有哪些?就是redis有哪些用途?
布隆过滤器的实现原理是什么?
怎么建立索引,建立索引的原则是什么?
我们是使用主从读写分离的操作,如果我操作主节点之后,在操作从节点时,想要立即看到刚才操作的数据,应该怎么做?
分库分表用过没?
那分库分表的中间件有哪些?
sharding-jdbc的分库规则有哪些?
dubbo用过没?
springcloud的注册中心用的哪一个?
他的注册流程是什么样的?
注册中心的负载均衡这么做的?

菜划算二轮技术
你负责的模块?
你负责的模块的项目难点是什么?
为什么这样能解决有序性问题?
对于服务器宕机的问题,如果我想不影响数据的迁移怎么整?
这样的话,你之前的解决问题的方案是不是就不需要这么麻烦了,还需要每个服务器一个mq?
要保证数据的有序性,你把同一个设备的mq发到不同的设备,那你不知道哪个信息会先被处理,还是会有问题的
那我只使用同一个mq,因为是按生产者存放的顺序整的,这样是不是也能保证有序性?
那你只使用到一个mq队列,那他的吞吐量怎么保证呢?
如果业务继续扩大呢?那你应该怎么处理?
数据库主从的架构是什么样的? 
数据库主的宕机后,那你修改怎么整的?
数据库主从部署在主节点操作数据以后,其实其他的去查询从,如果我想看到最新的数据怎么办?
那如果从节点很多,那你这速度太慢怎么办?
那还没有解决问题啊,其他方式有吗?
在多线程中,如何让一个线程不再进行执行了,中断他的执行?

菜划算  hr面   
为什么选择离职?
你最终做的项目,主要服务于哪些用户的?
在你做项目时遇到了什么问题,怎么解决的?
这些问题难吗?
那这些解决方案是你最终敲定的吗?
在选择新公司时,你会考虑哪些因素?
领导对你的评价?
你做的是安防,如果做商城了,你感觉你会遇到的问题?
海康给你带来了哪些好处,或者是你在海康2年内的成长?

玩物得志

玩物得志一面 
项目介绍,你做的哪个模块,详细说一下?
hashmap
多线程并发在项目中用过哪些?
线程池重要参数?
线程池的线程数?
分布式事务?
线上服务器反应慢,你该怎么办?

玩物得志 二面   
一直问项目上的问题?
项目介绍?
项目难点?
一致性hash怎么使用的?
一致性hash还用哪些应用场景?
如果你作为项目负责人,过来一个需求那你该怎么做?
如果中间进行了需求变更,你该怎么做?
如果项目中出现了问题,那你会怎么做?什么时候做?
我们这边是互联网公司,所以对于问题,要尽快的进行解决,那如果晚上或周六你的模块出问题,你该怎么做?
你们之前是传统行业,我们是互联网,你说一下,这对于你以后工作上会有哪些不同?

玩物得志 三面    
为什么选择离职?
我看你之前是传统行业,而进入互联网行业是996,你感觉自己准备好了吗?
我们这边是核心团队,我要求我的团队7*24小时在线,你可以吗?
你们版本多少天迭代一个版本?
我们这平均每周迭代一个版本,任务量很大,你感觉自己可以吗?
你怎么感觉自己的技术可以,你们公司的RPC使用的什么框架?

酷家乐

酷家乐一面
项目介绍?你负责的模块?
消息从产生到最终的数据库存储,它中间的处理流程是怎么样的?
对于判断一个GPS经纬度是否出区域,你们是怎么判断的?
看你说你对于java并发了解,说一下ThreadLocal吧
那你说一下什么是ThreadLocal?
ThreadLocal的话,不显示调用remove方法的话,除了内存遗漏问题的话,还会有什么其他的问题?
那如果出现这种问题,你大概知道是因为这个线程池中线程没有进行remove,那你可以使用什么办法确定你的猜想?
看你熟练使用redis,那你使用redis是用来干嘛的呢?

酷家乐二面技术
算法题:
        83. 删除排序链表中的重复元素
        82. 删除排序链表中的重复元素 II
zookeeper的zab你说一下吧?
AQS说一下吧
JMM内存模式说一下吧?
说一下volatile关键字吧?

酷家乐三面技术
算法题:
        阻塞队列的实现,生产者和消费者模式
        SQL语句的编写,成绩表,主要字段:学生id、课程id、成绩, 使用SQL语句编写   查询出每个学生的平均成绩大于70的学生的id,和平均的分数
在写阻塞队列时,问的问题:
wait、notify和await、signal两套之间的区别?
使用ReentrantLock时为什么signal就行,而使用Object.notifyAll是通知全部的?
除了ReentrantLock还有其他的什么方式可以实现?
有哪些JDK的核心类库用到了阻塞队列这种数据结构?
你在项目中如何基于Spring的扩展点完成相关的业务难题的?
你这个扩展点是在哪个阶段生效的?
你确定是这个阶段吗?
那你在我电脑里面找一下这个相应的接口在哪吧?
在某一个utils类中(这个类没有交给Spring进行管理),我想要获取到Spring容器的某一个bean你该怎么做?
那Spring是什么时候或者是什么阶段调用的ApplicationContextAware接口的方法的?
那你说一下undo和redo log是什么?分别解决了什么问题?
说一下MVCC是什么?
间隙锁的话解决了什么问题,和MVCC有冲突吗?
RR和RC级别下面是,事务里面的ReadView视图有什么区别呢?
在普通的select(不加锁的读)为什么RR可以解决幻读,而RC不能解决幻读呢?以ReadView作为出发点进行思考?
类加载的过程? 每一步都是干什么的?
你项目中每一种规则都对应一个线程,而且线程会从阻塞队列中获取GPS信息,那么的话,你这如果线程挂了(假设他挂了,不管怎么挂了),那么的话,你这阻塞队列中满了或者是超过了最大的长度,那么该如何处理呢?

同花顺

同花顺一面  
介绍一下你的项目、你负责的模块、你在里面的职责是什么?
你负责的项目的难点是什么?
如果项目上线后,出现问题,那么该怎么排查?
你的项目部署到B端,那么怎么做到这么多项目的更新?
你这每次服务器宕机和新服务器加入都需要重新进行订阅,那么如果你的设备有1000万,那你这传递的设备id将会是很多的,怎么解决?
你感觉你的项目还有哪些可以改进的点? 
kafka也有路由健的选择的,这个好像不是原因吧?
kafka有没有了解?
看你对JDK8的stream流有了解,那你说一下JDK7和JDK8的区别,或者说有哪些优化?
说一下hashmap在JDK7和JDK8的区别?
你平时都是怎么学习新技术的?
最近在研究什么?
JVM参数你是怎么设置的
有没有遇到过OOM的问题,怎么解决的?

你可能感兴趣的:(Java面试总结)