“四面四杀”面经

news/2024/10/17 19:23:24/

前言(经历)123123

毕业五年了,已经将近两年没有面试了,这次想在自己职业生涯5~8年的阶段在一个大厂的核心部门的某个细分领域沉下心来,总结出自己在复杂领域模型设计的方法论,为未来转型业务架构师打下基础,所以简历投的也不多,只有某里、某团、某滴(简历没过),下步准备再刷刷算法试试某条和拼夕夕,除了某团某个大数据部门方向确实不是很匹配(三面仅仅聊了半个小时,部门的主方向主要是一些某团大数据团队在做的一些事情,而我确实对大数据中间件不是很感兴趣,但在此也要谢谢大数据部门的三轮面试官大佬,他们确实问的问题更偏底层,深度也是这次经历面试最深的,面试收获也是不少),其他技术面试都已经通过,也算是比较顺利的面试经历。

自我介绍

这次面试总结下基本都需要三~四轮技术面试,每轮都有点算法问题,也顺道介绍下自己,15年软件工程毕业,工作四年半了,一直呆在二线城市,没有大厂经验,闲来无事喜欢看些大厂或者技术大佬的原创博客,有点闲暇时间对自己偏爱的领域(中间件、稳定性保障体系、云原生等)会啃下几本大簿头的书,下面总结下面试遇到的一些问题,希望大家们有所收获。

面试内容

某团核心业务部门

一面

1、自我介绍

2、稳定性这边的概念,做了哪些工作

3、如何做的全链路跟踪的

4、稳定性能否保障100% 出现故障怎么降低损失 做了哪些努力

5、线上故障排查 每10分钟crash一次 如何排查 可能出现哪些原因

6、实际的gc调优要求,什么指标需要gc调优

7、cpu飙升怎么判断

8、网关qps 如何支持

9、concurrenthashmap 如何并发 size如何实现的 size++是否线程安全

10、redis 大key如何调优,如何监控,如何解决

11、哪些(一些驱动包和通用组件)是你自己主动提出来做的,咋做的,如何收获同事们的反馈

二面

1、权限模型,如何设计的,有什么亮点,通过位运算对比角色具有的功能点和具体角色,位运算这里怎么做的,做过bitmap吗,异或、与或的区别

2、redis 有些数据类型,sorted set 平时咋用,怎么做延时队列

 扫VX 领Java资料,前端,测试,python等等资料都有

3、学生与学科,查询某个学生的所学学科情况,某学科对应的学生,怎么设计这个数据结构在redis里

4、redis如何实现一个二叉树

5、如何解决大key问题,key多,value大如何处理

6、mysql的事务隔离级别,rr如何实现,给你一个sql描述下加锁过程(数据库级别,索引类型),mysql有哪些锁,啥叫gap锁,生产上遇到过死锁问题吗,举一个gap锁死锁的例子,如何避免死锁

7、mysql为啥要用b+树,有啥优势,hash索引的优点、缺点,生产上用过hash索引吗

8、手写一个多线程死锁的代码(java)

9、中间件做过哪些努力,可靠性消息服务是如何做的,原理画图,能否保证mq的100%高可用,如果想保证mq的100%高可用还可以在目前的基础上做哪些努力,有哪些想法,使用redis、mysql兜底也不可靠的话怎么解决(异地容灾,同城双机房?)

10、有啥问题要问我(聊了聊组内情况,负责业务,主要的技术挑战等等)

三面

1、中台负责哪些模块,saas 和 中台有什么区别,中台负责的责任,saas做的比较好的国外公司、国内公司,对标的企业,元数据是干啥的

2、中台如何做业务的抽象,如何划分领域模型

3、商家的灰度分为几个维度,技术上怎么实现,具体细节

4、如何解决不同商家的某个接口具体实现,更改某段逻辑会对其他商家造成影响,什么是贫血模型,什么是贫血模型的失忆症

5、kafka原理讲下,源码看过吗,使用java写的吗,从哪个版本从scala改成java,如何达到的高吞吐、低延迟,kafka的消费者再平衡过程能描述下吗,会出现哪些问题,kafka生产者有哪些参数可以配置,生产kafka做过哪些调优,线上出现哪些生产问题,如何排查的,如何解决的,如何推动的

6、spark 做rdd聚合比mapreduce的优势在哪里,为啥快,如果down机spark内数据还在吗,如何设计一个学生表hbase的列族

7、微服务链路跟踪的技术框架如何选型,为啥使用jaeger 不用 cat或者skywalking ,trace_id如何传递的,原生的threadlocal,InheritableThreadLocal有啥问题,为啥threadlocal key要用弱引用,强引用的话能否解决内存泄漏的问题,为啥不用强引用,为啥用阿里的TransmittableThreadLocal,内部是如何实现的

8、看过哪些中间件的源码、书籍,哪些书写的不错

9、为啥要离开目前的公司,职业规划(三年一个坎,五年一个坎,八年一个坎,准备在五到八年的阶段到大厂的核心部门熟悉一个细分领域,沉淀出自己领域建模的方法论)

10、如果换一个领域的话,怎么快速的熟悉这个领域的知识(ddd的领域建模过程)

11、有啥要问的

某团大数据团队

一面

1、手撸一个lru,各种细节

2、spring 核心功能 ioc 和 aop 实现原理

ioc 解决了什么问题 实现方式是怎么样的?ioc 实现流程?如何解决循环依赖的问题 ?

aop解决了什么问题 ?分哪几种?如何区分?性能有啥差距 ?

3、jvm内存划分有啥好处?元空间堆外内存好处 ?

  (1)之前不管是不是需要,JVM都会吃掉那块空间……如果设置得太小,JVM会死掉;如果设置得太大,这块内存就被JVM浪费了。理论上说,现在你完全可以不关注这个,因为JVM会在运行时自动调校为“合适的大小”;

  (2)提高Full GC的性能,在Full GC期间,Metadata到Metadata pointers之间不需要扫描了,别小看这几纳秒时间;

  (3)隐患就是如果程序存在内存泄露,像OOMTest那样,不停的扩展metaspace的空间,会导致机器的内存不足,所以还是要有必要的调试和监控

4、简单介绍垃圾回收 时机 分代的好处

5、kafka 的架构 通过什么手段达到消息的不丢不重

6、broker 宕机恢复 扩容瓶颈 步骤 线上出现过什么故障 如何排查 调优

二面

1、稳定性保障如何做,你在其中的职责,汇报关系

2、做的项目难度复杂度比较高的项目,项目主要的目标,技术架构,为何要服务拆分,依据什么原则,自己如何评价所作事情的效果,同事如何评价,有何标准

3、mysql删除一条数据的步骤,mysql的隔离级别,rr是如何实现的、原理,rr的加锁读和不加锁读描述下步骤,redo、undo会出现一致性问题吗,怎么解决的

4、生产中遇到过有关数据库事务的故障吗,死锁,描述下故障的原因,如何排查的,如何解决的,如何推动的

5、redis底层数据结构有哪些,为减少内存做了哪些努力,redis hash、跳表有哪些与jdk不一样的地方

6、redis集群架构,哨兵的原理,如何做到slave业务端的无感知扩容,主观down、客观down的过程

7、每个 Sentinel 都需要定期执行的任务有哪些,主观宕机的条件,quorum和真正达到fail over的条件是什么关系,Slave选举与优先级

8、redis主从复制的大致过程,redis Sentinel 能保证不丢数据吗,为什么

9、sql在线笔试,有一个表A 是昨天的数据快照表,表B是今天的数据增量表,通过select语句生成今天的数据快照表

10、手撸两个字符串的最大公共子序列,如何计算时间复杂度、空间复杂度

11、对带团队有没有想法、心德,如果让你带四人小团队,人员构成怎么选择

12、最近学习的技术,看的哪写书,ddd解决了什么问题,描述下ddd,聚合根的目的、实体与值对象的关系,怎么划分领域的上下限,为什么要学rancher、k8s

三面

聊了聊部门主营业务和方向,感觉未来不想放弃在java稳定性保障、中间件、业务领域的技术沉淀,从事一个陌生的大数据组件私有化(某团内部版本与社区版偏离有点远)升级、改造,所以也还挺尴尬的,一二面没有聊清楚具体的方向,感觉也挺耽误大佬时间的

 扫VX 领Java资料,前端,测试,python等等资料都有

某团核心部门二

一面

1、java 如何写一个十进制转二进制的算法

2、集合

继承结构 有哪些实现类 接口 每个实现类的具体实现 原理

arraylist linkedlist hashmap hashset

3、数据结构 对比 优点

4、hashmap的底层实现

5、为啥数组+链表 单纯数组可以吗 哈希表的几种实现方式说下,优缺点

6、链地址优点

​ (1)resize方便,直接位运算即可

​ (2)空间换时间

​ (3)删除方便,链表删除元素

7、链表解决了啥问题

8、put操作的流程 ?get、rehash的过程?

​ hash值怎么取的=>object对象的方法=>jvm对象头

大于8变成红黑树,红黑树、平衡树、二叉树的对比,为啥用红黑树不用 平衡树?

9、并发包 aqs

​ aqs解决了啥问题

​ 基于aqs的实现类

​ 可重入锁能重入多少次

​ 手画下可重入做的自旋入队过程

10、countdownlach的源码 如何实现

​ 具体实际工作啥时候能用

11、重入锁的原理,可以重入多少次 源码如何实现

12、数据库的表结构,权限系统设计

​ sql优化手段

​ 什么列上加索引

更新操作注意哪些事项=>更新字段要加索引,避免死锁=>怎么避免死锁=>生产怎么排查死锁=>有哪些死锁案例

13、索引与锁的关系,一条sql如何判断加的什么锁

14、redis 用来干啥

15、缓存如何使用 多级缓存,数据库与缓存的

16、二级缓存更新步骤 通过什么组件实现本地缓存同步

17、缓存有效时间怎么考虑 为啥这么设计

18、缓存对象大概多大 大key如何报警 大key如何拆分 大key如何删除

19、啥是热key 如何报警 如何规避

20、稳定性方面的工作

21、mq在设计方面考虑

22、如何高可用 高可靠不丢消息 幂等 顺序等

二面

忘记了,上来就说看到我被xx部门录取了,我说是的(窃喜,不会细问我了吧,没想到又锤我了一个多小时,不过面试官人都很nice)

三面

忘记了,只记得面试官人很nice

四面

1、具体负责哪些工作,公司做那块业务的,对标的企业、产品,技术团队有多少人,中台还是中间件,业务中台还是中间件比较多

2、稳定性保障都是负责哪些工作,人员组织权限遵循什么规范,观察哪些指标,报表的数据权限怎么做(元数据)

3、5-15-30可灰度、可降级、如何实现的,做了些工作,和其他产品有什么对标,怎么优化,怎么实施

4、如何获取其他业务团队的反馈,需求

5、中台网关,不同的业务都走你们的网关,如何做的业务级别的资源隔离,网关下面的业务的服务,如何做的服务的聚合,怎么做的领域拆分,领域聚合,提供应用服务给业务方

6、换工作的原因

7、还在看哪些公司的机会

8、哪些问题要问我

XX巴巴

一面

1、个人介绍

2、稳定保障的定义

3、订单量的监控

4、数据库调优做过哪些

5、redis调优做过哪些

6、热key报警怎么处理

7、多级缓存 本地缓存中key的数量很多 oom 如何考虑 缓存不一致的的问题 如何优化

8、热key监控如何做的,大促提前如何准备

9、代表性的事故,如何排查

10、redis锁的调用原理 watchdog机制

11、mq 的选型

12、kafka的整体架构 消费者如何记录提交offset

13、eureka的原理

14、springcloud dubbo选型

15、sentinel的原理 如何做的qps限流

16、innodb索引 数据结构

二面

1、可靠性消息服务中间件是干啥的?架构原理是?

2、如何收获同事们的评价?

3、rocketmq的架构?kafka的架构?有什么区别,如果有个broker挂掉了,线上如何操作,如果不操作会出现什么问题,操作的时候需要注意啥,为什么要都从leader节点复制数据,复制时有无限制?

Kafka如何存储的,消费者是怎么消费的,消费者组,统一消费者记录offset,如果消费者组有新的消费者加入或者删除的过程

4、服务拆分的原则,划分领域的标准,如何从需求中提炼出实体、值对象、聚合根、领域上下限,什么是一个实体(有唯一标识),实体与值对象的区别(是否有生命周期,可修改)

5、项目中遇到哪些性能问题,热key、大key如何做预警,如何解决,如何拆分

6、二级缓存框架如何设计,如何做本地缓存预热,get、delete/update操作缓存的过程,qps多少,本地缓存如何做的淘汰策略,能保持数据一致性吗,如果不能保证的话有强一致性的需求有哪些方案

类微博的feed流 推拉结合的方案

7、稳定性保障的工作,挑战最大的问题(有关事务等待时间超过redis分布式锁的时间,导致的数据异常的问题),如何排查出来的这个问题,怎么解决的,怎么推动的,怎么验收

8、再举一个线上排查难的故障(举了一个ng转发X-forward-proto协议在spring boot 2.2+netty的一个bug,通过tcpdump出进流量和出流量的对比,一步步分析)

再举一个例子(说了下微服务链路跟踪中间件jager在spring boot 2.x @Async注解使用的线程池出现的内存泄露问题,提了mr,自己做了源码的hack解决了问题)

9、对线上高可用做的一些总结和经验,如何建设一个稳定性保障的平台和机制,熔断、降级、限流、灰度具体的实现,整体方案设计评审等等、机器的容量水位等等

10、平时怎么学习的,都看哪些书,有什么收获,沉淀

11、有没有问题及补充的

三面

忘记了

四面

只记得让设计一个rpc框架,消费者和提供者的线程有几种

机哥后话

不少的小伙伴现在陷入了一种死局,为了应付面试而去学习,导致在他的知识体系中都是零散的知识点,不成结构,这样会导致什么呢?你不论是和别人讨论或者说是技术分享,都很浅薄......就知道那么个点,点到即止了,聊不下去,挖不出什么有价值的思考输出和想法~

所以建议准备面试的小伙伴能够以体系化的方式去复习和学习,当然

群内有不少小伙伴拿到了很不错的offer,我都在尽力催着他们快写给我投稿,后续会给大家带来不错的有质量的面经,这样子我就可以不用写技术文章啦~美滋滋......

小伙伴最后总结

通过这一轮的面试实战,我总结下某大厂核心部门简历评估、技术面试的要求有几方面

简历评估、初筛 :

1、学校背景,top 20学校 软件工程专业加分,211学校加分

2、职业经历,是否具有互联网从业背景,自毕业以来一直待在BATJ&TMD&FLAG加分,P6P6+本科毕业3年到五年 P7+本科毕业5~8年

3、项目背景,有中间件研发背景加分,开源组件贡献者加分,项目深度广度、与现有业务匹配度加分

4、其他因素,是否跳槽频繁,kpi得分等等

第一轮技术面试考察

1、java基础、并发基础、中间件原理、jvm、分布式协议、mysql等

2、系统设计能力,系统架构的设计、模块功能的划分、微服务的划分、高可用、可拓展性、稳定性的考虑

 扫VX 领Java资料,前端,测试,python等等资料都有

3、编程、算法能力(时间空间复杂度的分析)

二面

1、中间件原理

2、生产事故原因的深度、广度、协调推动其他部门的能力、方法

3、分布式系统设计,高并发等考虑因素

4、工作经历,工作中遇到的最难的问题,如何排查、解决、协调、推动、获取同事们的反馈

三面

1、软素质,沟通协调能力,人品

2、项目把控能力,团队成员结构选择,进度把控,风险分析

3、学习能力,主动学习的热情,拿到结果的学习才叫学习

4、职业规划,职业性(是否靠谱),自驱力,责任心,主动拿结果的想法

我也和大家一样在职业生涯初期走过很多弯路,毕业两年多时阿里的一个面试官对我的影响很深,可能没有他的催促和鞭策我可能现在也没有找到努力的方向。我也很能理解大家们职业发展上的迷茫,在这里我也想分享下我自己的一些学习技术的经验,那就是不要痴迷于某项新技术的语法糖或骚操作,尽量从某个领域的大簿头的书开始看起,虽然看的慢,但是对搭建自己的技术体系具有比较重要的作用,博客、知乎、github等学习到的知识总感觉是碎片化的知识,对提升自己的知识广度有帮助,但是对实际生产、工作当中、面试中用到的技术深度、触类旁通的能力得不到锻炼。能够在这个浮躁的社会沉下心来,多看几本专业的书,你其实已经比很多很多人要强了,不要着急,稳扎稳打,争取做生活和工作当中,家人、同事心目中比较“靠谱”的那个人,祝大家在生活、工作中,幸福美满,天天开心~。

在此也谢谢机哥、斌哥、暴扣哥等大佬在技术、为人方面的指导与内推,谢谢大佬!!!

在此推荐一些某些领域深度和可靠性比较高的书,也欢迎大家给我推荐比这几本更可靠、更有深度的书,谢谢大家。

JAVA基础:《Effective Java》《JAVA编程思想》《数据结构与算法分析》

JAVA并发基础:《JAVA并发编程实践》

Spring :我还是建议看看源码,aop和ioc两条腿开始看

Mysql :《高性能mysql》《innodb技术内幕》

Redis :《Redis的设计与实现》

Mq :《Apache Kakfa实战》 《Rocketmq 实战与原理解析》《深入理解Kafka》

分布式原理及Zookeeper:《从Paxos到Zookeeper》

JVM :《深入理解java虚拟机》

设计模式 :《大话设计模式》

领域驱动设计 :《实现领域驱动设计》

 扫VX 领Java资料,前端,测试,python等等资料都有


http://www.ppmy.cn/news/653177.html

相关文章

汇编指令的英文全称(中英文对照)

汇编指令的英文全称 如果你想写系统软件,两本入门书籍--谭浩强的《C语言程序设计》和王爽的《汇编语言》是必看的。谭老的C语言已相当成熟,王老师的汇编倒有个小缺陷—指令没有英文全称,或许他认为现在学编程的朋友都不记单词,如同…

nice计算机英语,不错的英文,nice的三种意思?

好的英文名字 GOOD 表示好,一般是是事物和行为的看法,或者是主观的意思的呈现WELL 一般用于语气词,很少放在句末,句子不多见NICE 比GOOD 在语气上更好一点,也说某事干。不错:Nice! Very good! 很好的英文怎…

java表头查询

首先DTO继承TableBaseSearchVO 这里有一个private List<Map<String, Object>> twhere; 前端会将数据传给你&#xff0c;如: { "twhere": [ { "type": "text", "bracketLeft": "", "fieldName": &quo…

用路由器打印机显示服务器不存在,打印机连路由器怎么搜索不到

Q1&#xff1a;路由器找不到打印机共享是怎么回事 现在打印机都自带网络接口&#xff0c;可以把打印机与交换机连接即可&#xff0c;不需要特意安装在哪台电脑上&#xff0c;随时连接随时打印&#xff0c;不受电脑控制。 你的这种情况的&#xff0c;首先你可以尝试ping下你们办…

计算机安装了打印驱动无法打印,安装打印机的时候为什么电脑无法正常识别打印机?...

在安装打印机驱动的时候你有没有遇到过电脑提示无法正常识别打印机的情况&#xff1f;关于这一类的问题主要是由于驱动的原因而导致的。我们在安装打印机的时候系统常常提示我们无法识别到打印机&#xff0c;这个时候不要急&#xff0c;其实解决这一类的方法很简单。下面我就给…

epson连接计算机后无法打印,如何解决连接到Epson打印机后计算机无法打印的问题...

一个用户说&#xff0c;计算机连接到Epson打印机后无法打印. 现在&#xff0c;办公室工作人员需要通过打印机下载工作资料. 无论生活还是办公室&#xff0c;打印机设备都是分不开的. 但是&#xff0c;打印机将无法使用该问题&#xff0c;如何解决&#xff1f;针对这种失败&…

华硕固件无线打印机服务器设置,华硕路由器远程打印机LPD设置-Windows.pdf

华硕路由器远程打印机LPD设置-Windows.pdf FAQ How can I set the printer by Line Printer Remote (LPR)/Line Printer Daemon (LPD) in Windows OS with the ASUSWRT firmware of ASUS wireless router? Category How can I use EZ printer sharing in Windows OS with the …

华硕无线路由打印机服务器,华硕RT-AC86U路由器怎么共享打印机

在使用华硕RT-AC86U路由器安装打印机服务之后&#xff0c;您可以通过LPR/LPD协议在Windows和MAC操作系统的电脑中共享打印机。下面小编将具体操作步骤告诉大家&#xff0c;快来看看吧&#xff01; 共享打印机步骤 1.在Windows桌面中&#xff0c;点击[开始]> [设备和打印机] …