网络:
os:
JVM
Java内存模型 GCRoot 了解的 GC 和 GC算法 CMS特点 如何实现的并行垃圾回收 CMS完全可靠吗?
简历提到设计模式 项目用到的设计模式
现场出了一个类 要求使用策略模式解耦 使其满足开闭原则,题目大概是这样:就是按照入参调用对应的service
class ExampleService{
private AService aService;
private BService bService;
private CService cService;
public void doBusiness(String serviceType){
if(serviceType == "A"){
aService.doABusiness();
}else if(serviceType == "B"){
bService.doBBusiness();
}else if(serviceType == "C"){
cService.doCBusiness();
}else{
throw new IllegalArgumentException("type error!");
}
}
}然后面试官还提醒每一个策略还可以用单例模式优化
简历提到测试
单元测试 Junit Mockito PowerMock
集成测试 回归测试
做题:
一面过程感觉自己嘴皮子飞快,基础知识都是比较常规的八股文,觉得设计模式那个比较有意思。
30min后hr打电话来说一面过了约了二面时间
前面还是自我介绍+聊简历
网络:
os:
Java基础:
数据库:
分布式系统:
到这里已经快一个小时了,二面面试官就一直不停在问,但也很热情,也不停在记东西,本以为要结束了没有算法题,结果还是逃不掉QAQ。
41.缺失的第一个正数
他开始没限制实现,我看了看不是把数组元素丢HashSet,然后从1开始遍历就解决了吗,然后他非要说这样不行有反例,然后他也没举出来反例,然后就说不能用额外空间,他就说能不能自己实现一个hash,我就有点一头雾水,然后他就开始旁敲侧击说应该让数字到它应该在的位置。然后我想了大概15min写出来了。
面完当天约了三面
有一说一,我都不想重听一遍这面的录音,真的问的东西很怪,没问八股也没有算法题,答得也有点紧张,面的时候心里一直想要挂在这面了...
面我的是部门的leader,感觉凶凶的,介绍完自我介绍和实习,提到了实习的时候用过kafka,实现过一个请求合并器:具体功能就是在接口并发量较高的时候把请求先放到一个阻塞队列里,等队列中请求数量到一定数量或者没到数量(并发量低的情况下队列打不满也不能让用户一直等)但触发定时器超时再把这些请求参数打包一起去访问DB,目的就是减少对DB的访问。
没想到之后的所有话题全是围绕这个东西的,基本等于让我从白板重头写一个了,但是这个东西是好几个月之前写的,很多细节都已经忘了,而且基本都用的公司内部的很多模块的代码,让我从白板写确实还挺无奈的。
他问的方式比较宽泛,反馈给的不多,只是一直在记,全程也是我在推动话题的发展。
当即我就想着一定要简化这个问题,不然太复杂了。
我就把接口的需求简化了 这个接口就是取id从 n1到n2的数据 所有用户请求我这个接口都会传两个参数 n1和n2
首先他问怎么个打包法:
本质上就变成了一道算法题:
56.合并区间
那在sql层面就大概会变成
select * from data
where id > 10 and id < 100
or id > 120 and id < 200
把所有需要的数据一起查回来后,再在内存层面让每个线程去拿自己需要的数据,比如请求A取[10,70], 请求B取[50,100],这样肯定比每个请求都各自去访问DB要快..
他说了句ok,就换了另一个白板,让我实现阻塞队列,并满足我上面说的「达到一定数量一并取出」和「定时器超时」功能,然后我就懵逼了,不知道怎么写,他也没给什么提示直接闭麦了。。。
当时觉得就不能什么也不写,不写肯定挂了,写点伪代码也行,就硬着头皮写,反正多线程也跑不了,大胆讲出自己的思路就行了。 大体框架和这道题差不多:
1188.设计有限阻塞队列
因为没法调定时任务框架,定时器什么的就开始乱扯了,什么取当前时间戳和上次访问的时间戳减一减啦,减到0就打包发出去啦...
然后他说ok就没什么要问的了,开始反问。
总之三面leader全程冷漠,一直都是我在讲,八股是一个不问,挺离谱的。
面完感觉挂了,因为确实感觉面试官态度不是很好,之前面B站也是这样就挂了,面完晚上翻来覆去睡不着觉得自己很倒霉总是被kpi,难受的要命。
没想到第二天hr说我三面过了,而且面评很好。。。(所以三面面试官是傲娇吗,还是压力面啥的qwq)
总之提了offer审批。等了一周oc了。
本人真的很菜,小小的211大三和力扣上大佬的学历经历都没法比,可能从开始学习前后端技术到现在可能差不多有一年多点的时间,也是因为朋友的引路才选择了就业这条路。上海疫情三个月都封在家里,实习也没法去线下,真的非常焦虑不知道就业该怎么办,转正形势也不明朗,就边摸鱼边刷题边背八股。提前批压根没指望,果不其然提前批简历没有一家是过的,投的后端全部挂掉,最后字节tt的hr小姐姐把我捞了起来qwq,说客户端正好有hc要不要来试一试,那我肯定不能错过这个机会,虽然不是后端,但我也足够满意了。今年大家都很不容易哇QAQ。。。
现在回想起来还是很感慨,去年这个时候可以说自己会的东西还很少,能写两个接口了不起了。这一年真的学了很多东西,题也刷了四五百道(虽然记住的可能不多...)。去年看到力扣各位大佬的面经都清一色的高并发,分布式真的想想自己tm什么都不会可能没什么机会了,但还是不甘心翘课去实习去刷题去背八股(不建议学我)。事实证明机会还是给有准备的人的哇,这里也收集了很多大厂的面试题,有需要的朋友可以看一下,Android面试题合集。
最后希望看到这篇文章的同学共勉,祝大家都能收获满意的offer~