小红书-引擎架构- java实习-一&二面凉经

五面小红书全挂了嘻嘻😁

一面:

1.自我介绍

算法:反转单链表,递归写法怎么写,acm格式

2.解释下线程和进程的区别

3.static 和 const这两个的含义

4.java的垃圾回收机制

5.反问 感觉像KPI 就没问什么

二面:

1.自我介绍

2.就比如说是个交易系统,比如说我要给谁转账,你不能说失败了,就是我转给他钱,这个事是不能失败的,对吧?嗯,对的,即使失败了也要有这个兜底保障机制的,就我要能够保障这笔操作必然能成功。嗯,那这种我们是可能是什么样一种解决方案?

3.那你比如说现在你第一个任务失败了,第二个任务还失败了,你怎么知道他失败了两次?你怎么知道要重试两次。(说了增加计数器)

4.那我再延伸一下,你这里任务每次执行的参数都不一样,你这些参数放到哪里呢(说了抽象出上下文字段)

5.解答我的问题:这里其实你的想法还是维护一个任务失败的记录表,但是比如说我们扫表的过程中数据库压力满了,不是单单的任务的问题,这个时候你的兜底机制再去扫表,其实又是给他增加了一个性能的损耗,这种情况其实更适合,把一些失败的任务当作一个消息放到消息队列中,去消费这些失败的消息,这种做个解耦我觉得更好一点

6.聊一下这个excel导出的需求

7.你是怎么去发现这个内存溢出的问题的,怎么去定位到对应的代码中?

(这种排查相关的问题核心就是:问题发现-定位-解决)

发现的背景balabal -- 通过MAT去分析dump文件,发现XSSFWorkBook占用了大量内存,然后定位到代码中,发现POI用到了这个WorkBook去把所有的文件全部加载到了内存中,所以数据量大的情况下产生了OOM -- 解决:分批加载、同步转异步balabala

8.cpu飙高的这种问题你觉得可以怎么排查

(这种排查相关的问题核心就是:问题发现(背景)-定位-解决)

(1)定位高CPU占用进程:top命令找到对应的进程ID

(2)根据进程ID找到导致CPU飙高的线程:top -Hp <PID>

(3)将线程ID转化为16进制:printf "%x\n" <TID>

(4)获取线程堆栈信息:jstack <PID> | grep -A 10 <TID> (其实就是找到进程-线程堆栈信息,打印对应的前10行信息)

(5)根因分析(分析堆栈信息)(比如死循环、大量线程上下文切换、死锁、大量FullGC)

(6)代码优化

(7)方案验证

差不多是按照这样答的,但是面试官觉得jstack看不到具体的信息,说可以用火焰图和Arthas去看9.那可以怎么定位到代码中呢,其实可以用火焰图

火焰图可以定位到问题方法

10.阿里开源的阿尔萨斯知道吗

Arthas就高级了,可以debug去打断点,可以看到具体执行逻辑中数据的流动

11.说一个实习过程中对你来说最有技术成长的case

12.怎么去排查fullgc、yunggc的问题,怎么去避免fullgc的问题

如何排查频繁FullGC的问题:

(1)分析/监控GC日志:可以手动看日志,也可以通过一些可视化工具如GCViewer来监控GC情况

(2)JVM参数优化:在分析完日志后,可以适当修改堆内存大小,然后继续监控GC情况

(3)分析dump文件:如果参数优化完成后还是会有问题,说明是代码里面的问题,那这里跟OOM排查就基本上一样了,去分析dump文件看是代码哪里的问题,然后去解决

不一样的点在于,这里要多次dump做对比,最好在GC前跟GC后都做对比,因为如果你在GC后去分析dump,有的大对象已经被回收掉,可能就排查不到问题所在

避免fullgc的问题:

增加堆内存大小、优化对象创建、使用合适的垃圾回收器、对象生命周期管理、监控分析、定时检查内存泄漏

算法:子集

反问:大概介绍了十几分钟的业务情况(以为稳了,热情是你的谎言~ 一周后排序挂)

#面试问题记录#
面筋(烤面筋) 文章被收录于专栏

烤面筋~烤面筋~三元一串,五元两串

全部评论
java有const吗。。
1 回复 分享
发布于 08-15 21:37 广东
兄弟们可以给我送点🌹🌹 不 让我做什么都行
1 回复 分享
发布于 08-15 18:27 山东
老哥几段实习呀,大概什么规模呢。同双非,感觉佬约面机会好多
点赞 回复 分享
发布于 09-23 16:34 湖南
uu第二个说的是MySQL持久化重试吗
点赞 回复 分享
发布于 08-18 09:28 广东
这么猛都挂了?好多我感觉我学了这么久都没听过
点赞 回复 分享
发布于 08-18 07:57 北京
没事替你体验了一下,打杂的,跑路了
点赞 回复 分享
发布于 08-17 19:23 北京
为啥问这么多jvm的
点赞 回复 分享
发布于 08-17 15:15 江苏
接好运
点赞 回复 分享
发布于 08-15 19:26 上海

相关推荐

11-04 12:02
门头沟学院 Java
从牛客开始,在牛客结束。我也是从看着牛客各种双非进大厂的帖子开始的。现在,我选择作为一个毕业即巅峰的小丑在这里谢幕。码字的时候,我已经入职外包公司驻场在银行有很长一段时间了。过去四年,从大厂到转内包到跳槽到外包,再一次印证了那句话:选择大于努力。如今,我决定离开这一赛道,跟完这个项目,我就会结束北上广深的漂泊,回到家乡踏踏实实的谋生。我大概是振作不起来了,心累。先声明一下,叠个甲:我就一普通人,我已经深刻认识到这一点了,我接受我是个菜鸟的事实。沦落到这一结果,都是我不够努力勤奋导致的。同样和我一样来自独立学院或者民办本科以及大专的同路人可以引以为鉴。我没能挺到下一个日出,衷心的祝愿各位前程似锦。【一、学院本以前真能进大厂,但是几乎没有上升通道】有人会问:学院本真能进大厂吗?能的,兄弟;牛客上那么多帖子;反正我毕业的时候是能的。当时的背景是,一段独角兽实习经历(直播方向)&nbsp;+&nbsp;一段外企实习经历(CI/CD&nbsp;和&nbsp;OLAP&nbsp;方向)+&nbsp;力扣100HOT有些公司网申是学历卡死的,但是内推是不卡学历的,所以大学期间内卷八股文和力扣是有用的,但是要真的很卷。但是进了其实跟没进差不多,我去的是2B赛道,而且在边缘部门,实际性质是交付的岗位。所以薪资是不算高的,按照当时的说法,年包大概25出头一点,但是我非常满意了,这也是我至今为止最高的薪酬。但是晋升资源是有限的,领导肯定是优先给学历好的,因为他们更符合“高潜”的条件。以上情况排除天选之子,还有关系户,以及人在江湖特别有实力的邪修。我们这种能吃到普调已经谢天谢地了。【二、被甲方学历歧视】想冲大厂的大家应该最关心的就是学历问题,学历歧视在职场中是什么样的。一起干活的同事之间大多数是不会care学历不学历的,大家都是来工作的,一起做事儿,打工拿钱。他们不会质疑你的能力,因为质疑你就等于质疑他们自己,更何况要维持团队氛围,合作共赢;除了某些低情商的,偶尔会遇到这种不长眼的喜欢把学历挂在嘴边,这种人远离他就好。但是学历歧视在2B领域非常常见,尤其是你的客户有自己的IT团队。2B2G赛道的乙方公司真的非常非常的坑,因为做这种业务的,它原生带有外包属性。我们学院本真需要带团队抗项目的时候,就知道高中不好好读书的后果了。甲方作为客户天生傲慢,不尊重乙方,我曾经不止一次的听到过甲方背后偷偷诋毁我自己:哎这个人我看过他资料,XX学院毕业的,不靠谱,就按照我们自己的意思来,不用管他。他们永远选择相信自己远在天边的的IT支持部门那群莫名其妙的,没有给项目提交过一行代码的架构师;无数次的驳回真正工作在一线的我的提案,我的建议,我的否定。其结果就是,说了不合理,说了不可行,说了会有影响,但是真出了问题所有的锅都得我自己背,还要加班善后。后来没办法,找+1沟通,找了个项目经理过来,我退居二线。就是这段经历,让我感觉自己的工作无限接近于外包,我意识到自己进入2B行业是错误的。2B业务和外包有什么本质区别吗?【三、转内包】自从我毕业以来,计算机就业行情一年不如一年。公司的福利不断衰减,第一年背了绩效,第二年不发年终奖。年中被要求转内包,月base降15%,换新的领导和新的项目,领导画饼说新项目好好干,年终会有保底。我信了,新项目很缺人,压力很大,初期三个月晚上回到家也在看代码,熟悉业务链路,总算是按时landing了。又要直面客户了,很烦,扛了一年,结果迟迟等不到年终奖的消息,当时内部刚好在提交晋升资料。我心想:我都混到内包了,还吃学历的亏吗,偷偷评估同事的成果,感觉自己这一年硕果累累,果断跟领导提晋升。怎么的也得把降的薪再拿回来,也是同时,AI也流行起来了。后来迟迟没有消息,我还在甲方那里忙呢,回公司一趟才知道,晋升名额取消,变成领导空降过来的嫡系。又得到了年终奖推迟的消息,我通过关系问了别的部门,说早就发完了,只有个别人有。当时就是想笑,又被当猴耍了,随即心灰意冷,休完年假裸辞了。【四、裸辞后冲击2C业务大厂失败,彻底进入失业大军】裸辞后疯玩了3个月,开始整理简历准备找工作。总结了之前的经验,我觉得是2B行业的问题。决定向2C转行,结果根本没有人理我。同时也发现自己进入不了状态了,随着近年的高强度工作,回到公寓只想睡觉,平时没有一点技术积累。看那种已经学过的框架知识非常吃力,提不起兴趣。力扣稍微刷了刷,发现以前会做的题目全忘了。投的简历也全都石沉大海,自以为简历做的很漂亮,但是HR没有反应。在网上翻了翻,Java就业一片哀嚎,看到有些经验帖子的项目和面试强度也令人瞠目结舌,手写raft协议都出来了。好不容易有了offer,但是每次谈薪被HR疯狂压,完全无法接受,argue一个小时,口水都干了,甚至争取不到0.5k。后来快过年了就几乎没有面试了,永远只有外包公司再一遍遍的问候我。想找内推,发现自己过去几年没有积累多少人脉,内推过去也说业务不合适。过年的时候花了很长一段时间刷力扣,背八股文,背场景题,但是求职没有回音,巨大的焦虑笼罩了我。卷不动了,刷了一段时间的题目八股文就忘了,每天被这些代码和文字搞得头疼。我的简历后来慢慢的就无处可投了。【五、回归外包】最后无奈开始接受外包,很简单,很轻松,随便聊一聊就被录用了。月base持平入职,但是福利待遇清零了,没有年终奖,五险一金也是最低系数,没有年假,请假扣钱,迟到扣钱。工作很轻松,因为不需要再负更多责任了,外包这个角色挺适合我的,听甲方的干活就可以拿钱了。我还挺喜欢这个环境的,再也没有人对我指手画脚了,就算有,我也可以心平气和的接受。在外包对着电脑屏幕发呆的时候,我就会想起过去的日子。一边陷入虚无,一边感叹996或许真的是福报。看着选择去车企的同学陷入了沉思,看着选择去游戏行业的同学陷入的沉思。看着老家的朋友们一个个买车,结婚,安家,我真的是碎了,感觉自己像个笑话。【六、总结】我想了很久,为什么得到了这么好的机会却没有把握住。想到的第一个因素,是运气。我是因为运气好而在校招中脱颖而出吗?还是因为勤奋提前学完了未来几年需要学习的知识?我现在觉得更多的还是运气。回顾我的第一段工作经历,我发现一切都早已被安排的明明白白。纵观全局,我大概从一开始就是个弃子,一个消耗品,我的作用就是背绩效、当脚垫和填线。技术呢,他就是个屁,业务才是王道。写代码其实大家都会,难的是做人。如果我圆滑一些,放下自尊,学会溜须拍马,学会扮丑,把甲方照顾好,或许一切都会变好。做事情,也不要用力过猛,平时只出5分力,不要急于表现自己,要做潜龙,不然会被当冤大头。对于我转内包,年终清零这些烂事,也是有预兆的。当时老员工不断被清退,技术领导被各种架空,上司和下属都在异地,一年都见不到一面,甚至连工作也几乎没有交集。内部派系林立,消息层层封锁,底层员工什么信息都不知道。成果好的团队被打散重组接手坑爹项目,成果差的团队换新项目。那时候我天真的以为,团队有充足的盈利年终奖和福利就有保障,结果被拿的一干二净。我应该早一些感受到危机,开始寻找出路。码农需要保持终身学习,我没有做到这一点,这也致使我社招失利,没能把握住每一个面试机会。还有就是后悔,选对行业真的很重要,跟着风口走,才有更多机会上升。如果我当时选择去一家车企,或者去一家游戏公司,现在是否会有所不同呢?值得一提的是,就在上周,我和前同事打游戏。他说我走的不是时候,再熬一年就好了,今年有名额,想走也不用裸辞,大概率可以给n+1。这就是命运啊。
点赞 评论 收藏
分享
10-20 12:51
已编辑
门头沟学院 Java
求求了来个好offe...:当然有希望啊,双非现在就是主战场。这话术明显是给你画饼了,不要鸟他。
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
15
76
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务