跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

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

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

面试节奏

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

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

正文

以下按顺序贴一下我面的各厂的面经。

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

网易一面(互娱)

  • 自我介绍+项目
  • RPC框架和普通http有什么区别和优势? 基于Tcp封装还是http封装的
  • rpc是长连接吗?如果要传输一个特别大的文件 底层还是基于流吗? Nio是一个什么IO模型?
  • github了的watch star fork
  • 异常和error的区别,oom是error还是异常?什么东西分配在堆上和栈上?
  • 只对堆进行gc 这句话对不对 调用system.gc()马上就执行gc吗
  • 缺页中断 分页地址转换 内存抖动
  • linux的fork指令对数据的拷贝是马上就拷贝的吗?
  • linux看网络状况用什么 看日志用什么?
  • 拥塞控制 以及里面的算法?流量控制的协议
  • Ping命令做了什么?基于那一个层?ping是哪一个层的?
  • Mysql和Redis最大的区别? MyISAM和InnoDB的区别?
  • Redis 的实现。为什么这么高性能 ?set kv键值对进去的时候,kv键值的长度是不一样的 你觉得底层的数据结构是一样的吗? 持久化的策略 长久下来aof文件会很大 怎么办?InnoDB行锁的分类 (其实就是排他锁和共享锁)
  • Select from update 是什么效果?事务你平常是怎么处理的?
  • 两个队列实现一个栈、圆里均匀地生成点(极坐标系)
  • ps命令的底层实现(???)
  • 类加载器 自己写过没

网易二面(互娱)

  • 自我介绍,爬虫项目功能介绍
  • 爬的是静态网页,还是异步加载的,怎么爬异步加载的?性能怎么样?如果性能要求高,怎么办?
  • 介绍一下协程 实现原理
  • 一个协程爬网站的时候 被卡住了 同一个进程的协程会不会卡住
  • 协程的好处 和线程的对比
  • 协程能解决什么问题
  • 有做压力测试吗?什么情况下需要用协程
  • 协程底层机制 yield底层实现
  • rpc框架全双工 还是半双工 单向还是双向
  • 不考虑全双工 在半双工的情况下 如何实现双向?如果要实现双向的话 应该用长连接还是短连接?
  • 用短连接能不能实现半双工通信
  • 如何实现异步地获得一个RPC调用的结果
  • RPC的通信格式是基于javaAPI实现的吗?
  • 你用过什么通信格式?这几个库能不能跨语言?
  • Springboot有什么技术难点?设计微服务的系统要注意什么问题?你是怎么理解微服务的?
  • 应用可以做到水平扩展,那数据库怎么办?
  • redis怎么保证缓存一致性
  • 微服务中会指数级增加复杂度的地方
  • 场景:一千个微服务 中有一个发生故障 怎么迅速定位?

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

腾讯一面

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

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

阿里(业务平台部)一面

  • 怎么解决消息队列重复消费
  • 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大型项目吗?有奖学金吗?

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

头条北京一面

  • 进程调度
  • tcp三次握手四次挥手,为什么是四次。
  • 算法题:生成全排列,非递归中序遍历二叉树

头条北京二面

  • ThreadLocal的内部实现。怎么确定一个线程使用的是哪一个threadlocal?
  • sync的内部实现,以及优化
  • sync标注不同的方法有什么区别。
  • 算法题:把汉字表示的数字转化成阿拉伯数字(我竟然按阿拉伯数字转汉字来写了,还好逻辑没问题)
  • 应用题:一个用组合模式实现的题。类似列出文件夹下所有文件。(手写有很多小问题,比如写错字,没有返回值)
  • 树存数据库里有什么办法?

头条北京三面

  • 吹项目。重点问了Netty,启动、连接建立、NIO特点、适用场景。
  • Spring的特点、IOC和AOP
  • 数据库索引、事务
  • 算法:最小编辑距离。(运气来了,我刚好在几天前刷到原题,不然凉凉。就算这样,当场写转移方程还是漏了一个条件)

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

拼多多一面

PS:pdd笔试真是奇葩,运气爆棚做出来3道过了笔试而同样做出来三道的大佬反而没过笔试……而且3月过了笔试,再我提醒hr之后4月才安排上面试…………

PS1:不过pdd面试体验真不错,确实比较基础。比阿里神仙打架友好多了!

  • 说说8种数据结构
  • 栈和队列的区别
  • 生活中栈的例子:真没想到,这是我整场面试里唯一不会的
  • 算法题:口述,还是TOPK原题……
  • n个节点的树可能的高度。最高和最低的高度
  • BST树的高度
  • 项目难点
  • redis的使用场景,和memrycache的区别
  • UDP和TCP的区别
  • Mysql的储存引擎和索引
  • 问了一个订单数据表(uid,orderId,time,moblie)每天2000w条,要存1年。应该怎么存?
  • 最后还就我的职业规划,跟我聊了好几分钟!体验无敌

拼多多二面

  • 先问项目。web项目背景。如何应对高并发、如何做分布式事务。
  • 看过源码嘛?AQS和concurentHashMap和HashMap。各个版本的区别说了一下。
  • 1.8版本的concurentHashMap在单线程下和HashMap效率有什么区别
  • 多线程方面学到了什么?Netty线程模型介绍一下、Java线程池四种介绍一下?
  • Nio特性介绍
  • 你怎么自学看什么书:并发编程艺术
  • JMM内存可见性
  • 还有什么能保证可见性:sync和Lock
  • 怎么打断线程(没听明白问题,后面又扯到kill指令了)
  • 问我之前的笔试题(一个多月了哪记得)
  • 手写代码:没有任何算法,直接按题意翻译就行。但是太久没写了,写得十分差,bug还没看出来,还是面试官提醒得……

PS:与拼多多这个产品给人得印象不同,面试体验相当不错,也不是很神仙,可能是在高速发展期吧。

其他

蓝厂:现场面。问了很多spring相关的,比如如何解决互相依赖的问题。

华为:面试流程非常正式,还包了顿饭。如果不是随机分岗,华为真的很不错。

四、总结

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

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

由于自己是跨专业的,所以在面试之前也做了很多准备,花了很多心思,自己准备的面试题也刷了很多遍,现在拿到offer了,也可以把面试题分享给有需要的小伙伴们!

需要获取得话麻烦一键三连之后看下图小助理的微信:(vip1024x)添加即可免费获取到哦

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

跨专业想转程序员,努力后竟然斩获到头条拼多多offer「Java岗」

 

end:如果你觉得本文对你有帮助的话,记得关注点赞转发,你的支持就是我更新动力。

需要获取得话麻烦一键三连之后看下图小助理的微信:(vip1024x)添加即可免费获取到哦

已标记关键词 清除标记