非科班出身的Java岗面经分享(阿里、腾讯、字节跳动、PDD)

一、开篇

本人作为某211院校某土木专业下属二级专业的学生,大二时通过知乎发现本专业前景堪忧(改变人生的一个知乎问题!)早早地做出了转行的打算。承蒙南大不弃,最后跨专业保研到了南大软院,事实证明,学校的名声在春招时给我带来了很大的帮助,掩盖了跨专业的劣势。过了研一上学期,基本上寒假一回来,2月底就算就正式开始了春招实习

二、before 正文

在面经之前,我想从切身体会上说两点很重要的场外因素:面试节奏和心理准备

1.面试节奏

没真正经历过面试之前,我们肯定会想着:先面小厂练练手,再去面大厂。然而,事实上,并不是先小厂再大厂的节奏,而是大大大大小小小大大小小小小的节奏。 大厂和小厂通常时穿插着面试,并且往往是大厂先面。 这就要求我们一是从春招开始就做好全部的准备——就算深度可能不够,广度至少得覆盖大部分的知识点,做到“就算3月1号面bat,起码能过1面”的水平。如果把握不大,不如拖两天面,这两天的成长会非常迅速(就像期末考前的两天)。我自己就吃了个大亏:腾讯一面非常查,post和get都说不清(天知道我怎么想的),所以在别人腾讯2、3、4、5面的时候,我整个春招只有这一次机会——表现太差了其他面试官也不会捞的。

考虑到我们的能力随着时间是慢慢增强的,所以个人觉得把最想去的公司安排在复习的中后期比较合适。 当然,要考虑到hc的问题。拿我举个栗子,本来我3月上旬就官网投了头条,但因为种种原因一直没有面试,错过了3月下旬的一次集体面试,直到4月下旬才面试通过。相比三月面过的同学,我失去了部门的选择余地,但是三月下旬我也确实没信心能够通过面试。而且,针对头条这家公司,请一定先尝试内推,无笔试,能自由选部门,运气好两面进,最后再去官网投递!

2.心理准备

春招的战线能从2月拉到5月,十分漫长。中间不仅要看书学习,还有不断的面试,以及学校可能安排的课程与考试,所以心理健康很重要啊。各位大兄弟有女朋友的抱紧女朋友,没女朋友的抱紧舍友吧(在此鸣谢我的几位舍友们!)

另外,在春招之前就要有“马上要面临春招”的心理准备,理想的时间线是:

  • 去年11-12月认识到要找实习,开始带着刷题、看面经资料(算法是最难突击的)
  • 寒假没项目的做一个有深度的项目(非crud),有项目的深挖项目(分布式、高并发往上怼,万恶的阿里)
  • 3月1号开始春招,海投并准备面试。
  • 3月-4月:(腾讯、阿里、网易等大厂的提前批阶段,头条、pdd的滚动面试阶段、其他厂也陆续开始)边学习边看牛客面经边面试,面试崩了心态别崩,总结教训,下一场好好面。建议先拿一个offer再说,不然后面心态容易炸。
  • 4月-5月:(腾讯、阿里等大厂的正式批,头条、pdd的滚动面试阶段、华为、蓝绿陆续开始)大佬这个时候已经拿到offer了,像我这样提前批凉了的就好好准备正式批吧,依然是面试和学习交叉进行。腾讯不锁简历,被捞了就能面。阿里一个阶段只能面一个,慎重选择部门,别头铁。 蓝厂只要一面就能进,性价比太高了。华为也很好,2面问了问基础,就是性格测试比较玄学(谁能想到现在海思被推倒了风口浪尖)。
  • 5月-6月:大厂基本都在之前结束了,但是华为是个例外,offer发的慢,入职也慢,慢慢等开奖吧。不过这个时候还能接到没招满的部门的电话,可以捡个漏。我甚至在头条总部大楼里接到了阿里一个部门的面试电话(= = )

腾讯一面

  • 你知道哪些RPC框架
  • RMI怎么实现的?
  • Netty里的线程池用的是什么?
  • 线程池的参数怎么设置?如果请求书超过了线程池的线程数会发生什么?
  • restfulAPI和RPC的区别
  • 你为什么用SpringBoot这个版本,相比于Spring框架有什么优势?
  • 你对SpringCloud有了解嘛?
  • 爬虫速度怎么样?单进程还是多进程?
  • 访问频繁被禁用了怎么办?
  • 什么是协程?协程和线程池的区别?
  • Mybatis和hibernate的区别
  • 一个sql查询慢,百万级别,单表,你觉得性能问题可能出在哪?
  • 如果两表查慢,问题出在哪?
  • Inner join 和left join 性能不同,inner join反而慢是为什么?
  • redis怎么实现消息队列?怎么实现分布式锁?
  • 说几个head首部。Content-type类型有哪些。get和post区别?

阿里(业务平台部)一面

  • 怎么解决消息队列重复消费
  • MQ为什么能单机抗很高的并发量
  • Netty里序列化的方式
  • 如果说想提高性能 用什么序列化方案?
  • Netty线程池:nioeventloopgroup 串行无锁化 thread和selector的封装
  • 线程池的设置参数
  • 线程数量怎么定的:n+1 和 2*n+1
  • 有没有测过不同线程数量对于性能的影响
  • 你的web项目有几个表 分别是什么。
  • 分布式事务实现方法?
  • update是原子性的么?
  • update会不会死锁
  • hashmap会不会死锁
  • concurrentHashMap:介绍一波1.7和1.8的结构
  • 建索引的规范或者标准:
  • 从宏观角度说一下数据库,“是怎么做出来的”
  • mysql的文件系统,是怎么找数据的?
  • 数据量特别大的时候 mysql会怎么去做
  • mysql是怎么跟外部建立连接的
  • redis单一get和set操作是不是原子的
  • 为什么redis没有做成多线程的
  • **设计一个秒杀系统:**整个系统上考虑 后台的搭建 网站 和数据库设计。
  • 允许上单的情况下怎么设计:就是比如整点抢购,每个整点都会有不同库存 不同价格的商品加入抢购
  • 你对996怎么看?你对没有技术含量的工作怎么看

PS:有一句说一句,这个部门的内推人是我面过所有公司里最好的一个,这里吹一波。

阿里(业务平台部)二面

  • leftjoin和rightjoin的区别
  • 分布式事务的几种实现方案
  • 高并发情况下用哪种方案。
  • 怎么优化使用rocketmq的分布式事务方案。
  • CAP原理
  • https和http区别
  • https可能出现不安全的地方
  • 打开一个url,会经历那些过程:
  • 这个过程中操作系统做了什么
  • 向淘宝请求首页,怎么提高性能
  • 如果为了被黑产爬CDN页面,而不用CDN,怎么在服务端实现静态页面和动态内容的merge?
  • session和cookie的区别、应用场景
  • 如何保证cookie的安全性,比如你的cookies被拷贝了?
  • 多重验证也不能保证安全性,应该怎么办?
  • 可以把客户端所有的信息都拷贝走,如何防止这种攻击?
  • 你知道那些rpc框架?dubbo的负载均衡?
  • cglib和jdk的动态代理的实现原理?这两者之间性能的区别?
  • 动态代理用多了之后对内存方面有什么影响嘛?
  • 动态代理、反射生产的对象在jvm的哪里?会不会影响到永久代或者是8以后的元空间?
  • 大概说一下代理模式?代理模式和适配器模式的差异?
  • 你觉得你说的代理模式能实现适配器功能嘛?
  • java线程池ThreadPoolExecuter和四个自带的分别适合什么场景?
  • 有全国性的奖嘛?有参与github大型项目吗?有奖学金吗?

PS:阿里对实习生要求很高,看他的意思是要已经学会了干活用的框架,去了就能干活的那种。

三、总结

整个春招期间,见识了各路大神,尤其是别人有了offer自己还没有的时候…………万幸在最后头条和拼多多给了一个达到我心理预期的offer,结束了2个多月的煎熬。

但是很遗憾,最终还是没有拿到BAT任何一家的offer,跟其他各路大神比起来也是差远了;算法题也是因为之前没有积累,只是靠了运气过了头条的面试;每个知识点也没有深入地理解,背完现在已经忘了大半;以及最重要的,代码写少了!

笔者分享:

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个赞关注我,以后还会更新技术干货,谢谢您的支持!

Guess you like

Origin blog.csdn.net/LBWNB_Java/article/details/120624506