一个死磕成都互联网的渣硕的秋招总结
前言
秋招总算是结束了,一直以来面试以后都有在有道云中记录面经,结束了正好给一起发出来,希望能够对小伙伴们有所帮助哇。(这就是开源精神吗?总感觉不发出来就是有啥事没干完一样...)
我的秋招目标还是比较明确的,我是铁定要留在成都的,所以还没有拿到心仪offer的时候我把成都能投的互联网岗位全给投了...于是乎后面的我投递的岗位的表格大家要是想留成都的可以参考参考
特别特别感谢所有给我Offer的公司,感谢你们的认可,尤其是TP-LINK,我还给拖了这么久...抱歉...
最后再感谢香水团,这一刻我感觉一定要给美团卖命.jpg
岗位整理
提前批投递
公司 | 岗位及工作地 | 应聘状态 |
---|---|---|
vivo | 笔试挂 | 第一家,啥都还没准备就上了哈哈哈,该遭 |
TP-LINK | 嵌入式开发,成都 | 2020-06-30一面, 2020-07-06二面, 2020-07-09发通过终面通知 |
招银网络科技 | 软件开发,成都 | 2020-06-30电话一面,2020-07-08视频一面,2020-07-16视频二面,2020-07-24视频三面(HR面),2020-08-14 加面 |
京东 | java工程师,北京 | 都没面上 |
字节跳动 | Java后端-People,成都 | 2020-07-02简历投递,笔试给挂了 |
OPPO | Java后端(一面后改为信息安全工程师),成都 | 2020-07-05简历投递,2020-08-03一面,2020-08-06二面,2020-08-14感谢信 |
建信金融科技(牛客SP专场) | 后端,成都 | 2020-07-11简历投递,然后没消息 |
OPPO(牛客SP专场) | 后端,成都 | 2020-07-11简历投递,然后没消息 |
奇安信 | 网络安全研究员,成都 | 2020-07-15简历投递,某一天做了笔试,然后就没有消息了 |
小鹏汽车 | 后端平台研发,广州 | 没消息 |
中兴 | 软件优招,成都 | 2020-07-21简历投递,2020-07-22两轮线下面试,8月出结果,2020-08-14又发面试通知...拒了 |
华为Cloud BU | 云计算开发工程师西南精英专场,成都 | 2020-08-19 笔试,2020-08-21 面试完成泡池 |
百度 | 基础平台开发工程师,北京 | 2020-08-22 一面,2020-08-28 二面、三面 |
正式批投递
公司 | 岗位及工作地 | 应聘状态 |
---|---|---|
汇顶科技 | 软开成都 | 2020-08-24,笔试,某一天连续完成三轮面试,最后给了没去 |
中电29所 | 开发,成都 | 做完测评了2020-08-24 电话面试,2020-08-28 现场面试,第二天签约座谈 |
网易游戏雷火 | 区块链研发,杭州 | 没消息 |
京东 | Java开发工程师,成都 | 2020-08-22 投递简历,2020-08-27,笔试,后面完成面试,二面没了 |
科大讯飞 | Java开发工程师,成都 | 2020-08-22 投递简历,2020-08-29,笔试,成都没hc |
字节跳动 | 后端开发工程师-基础架构,成都 | 2020-08-30 投递简历,某一天二面以后没了 |
美团 | 系统开发工程师,成都 | 2020-08-29 投递简历,后续连续完成笔试以及三轮技术面试 |
腾讯 | 软件开发-后台开发方向,成都 | 2020-09-08 投递简历,成都岗感觉没啥hc,都没面上 |
海康威视 | 应用软件开发工程师-Java,成都 | 2020-08-22 投递简历,2020-08-22,完成测评2020-08-28,笔试一面二面 |
中国农业银行 | 软件研发岗,成都 | 2020-08-22 投递简历,2020-08-29 笔试,第一批没我,后面被捞没去 |
完美世界 | 互联网java开发工程师,重庆 | 2020-08-22 投递简历,2020-08-25,笔试,hr打电话说重庆没有hc了 |
农行省分行信息科技岗 | 农行省分行信息科技岗 | 2020-09-23 投简历,结束了就没面 |
邮储银行 | 总行软件研发中心成都分中心 | 2020-09-23 结束了就没面 |
新华三 | 软件工程师 成都 | 2020-09-23 投简历,结束了就没面 |
长安汽车 | 乘用车-智能化-软件开发(J12969) 重庆 | 2020-09-24 投简历,某一天在学校完成所有面试,聊得范围很广,没有问code相关 |
ps:网易杭州只是因为研究生期间做过区块链方向所以投着试试,最后都没面上;长安汽车是因为喜欢车,家乡也是重庆的,于是投着试试,最后也拿了Offer,聊得很开心,感谢长安!
面经整理
我还是按照面试的时间顺序来吧,有的公司没有记录,后面有时间凭印象更新
TP-LINK
(那时候是真的水平一般,6月底,还是得更早准备才OK)
提前批一面(视频面 2020-06-30)
- 自我介绍
- 介绍项目做什么, 自己的职责,顺便问些项目相关(实现方式,没有问框架原理这些,估计面试官不是这个方向也不懂)
- 算法和在线编程
1)青蛙跳有多少种方法,斐波那契数列
2)无序数组的第k大(答堆排序)
3)给定一个数组和一个目标值,查找数组中是否存在两个数之和等于目标值(现场编程)(剑指57)
4)查找回文串的思路,答子串法和双指针法(胡)
5)Linux为什么要有内核态和用户态(答曰不会,我都想问那时候我知道啥)
反问成都岗区别,TP成都软开关注的技术栈(TP主要关注linux和网络)
总20分钟
提前批二面(视频面 2020-07-06)
- 自我介绍
- 区块链项目中具体涉及到了哪些密码学算法(自我介绍说的,追问)
- 对Java技术栈的学习方向(答Redis)
- 讲讲Spring-Boot
- Java反射
总16分钟
招银网络科技
提前批一面(电话面 2020-06-30)
- 自我介绍顺便介绍下项目,我直接介绍完自己把四个项目都介绍了
- (区块链项目相关)
1 项目的职责
2 对称加密和非对称加密
3 TLS工作机制 - Spring-Boot项目相关:
1 前后端分离项目如何解决跨域问题(答Controlller上加@CrossOrigin注解)
2 Spring-Boot开发过程中用过哪些starter:
答 web,test,mybatis,忘了说druid
3 项目中是如何使用缓存的,Redis?(Guava)
4 项目如何打包部署,还有啥部署相关的给忘了,答部署到win 服务器,通过bat脚本
5 Spring Cloud微服务用过吗
反问招银软开技术栈,答曰也有区块链团队,每个团队做的内容不同用到的技术也不太一样,然后举了一些例子
总12分钟
提前批二面(视频面 2020-07-08)
- 自我介绍顺便介绍下项目
- 介绍传输层协议有哪些,常见的应用层协议有哪些
- HTTP基于什么传输层协议
- HTTP有哪些方法
- HTTP PUT和POST有什么不同
- RESTful怎么设计URL?
- https是基于什么安全协议
- TLS都用到了哪些密码学算法,加密是用什么做的
- Mysql的数据库引擎都有哪些,(就知道InnoDB)
- InnoDB的索引用的是什么数据机构(答B+树),它有什么特点,(我:???)
- Mysql的联合索引查找有啥特点(问题都记不清了...)
- 数据库的隔离级别?
- 什么是幻读?那个隔离级别能够处理幻读?
- 线程和进程的区别?
- Java进程怎么创建,线程怎么创建?
- 线程池用过吗,介绍一些,使用线程池有什么好处?
- 通过Callable和Runnable创建有什么区别?
- 讲讲Java的同步方式?说了一通面试官说还有,继续追问
- 什么是CAS(上面说到CAS所以追问的)
- JDK有一个东西可以自动实现CPU密集型的任务的多线程调度优化,你了解嘛(问题有点忘了,大概是这样,答的Java Stream parallelStream,面试官也没反驳)
- 如果子线程要往父线程抛异常应该怎么做? ...
- 如果想要一个线程独享一个变量,这个变量应该怎么定义?
- Spring-Boot都用到了哪些设计模式?
- 工厂模式都有哪几种?怎么实现?
- 介绍下单例模式,都怎么实现?
- 手撕快排(让快点,就给了10分钟。感觉他饿了。。。写出来自我感觉良好的实现面试官说有问题...下来自己看发现循环边界条件错了,应该是end-1,我写的end.......)
- 反问成都招引Java都用来实现哪些业务,回答的太多了记不住了。再问有什么学习建议——答数据库!
总半个多小时吧,牛客不能访问麦克风?!(尬住了)通过腾讯会议搞的声音,牛客搞得视频。。。
提前批三面(视频二面 2020-07-16)
- 自我介绍
- (项目里做了两个区块链的项目)介绍下了解的区块链平台(Fabric + Ethereum)
- 介绍下智能合约,开发过智能合约没有
- 区块链技术目前还存在什么样的问题
- 工作考虑区块链不?
- 介绍下了解的密码学算法(非对称,对称,签名,密钥协商,哈希)
- 介绍下银行主要怎么用加密算法,从https方向答的
- Java里的线程安全的集合说一下
- HashMap,HashTable,ConcurrentHashMap区别?
- 介绍下了解的Java 的框架?
- Spring-Boot IOC原理?(没答上来面试官还仔细介绍为什么很多时候需要去了解框架的原理)
- 另一个.
项目的实现方式 - 自己后期的一个学习方向(答近期数据库,redis这些,面试官建议先去钻一门技术的深度,工作3-5年后再去研究技术的广度)
- 反问成都/杭州/深圳招银有什么业务上的区别?基本上是差不多的,主要还是人力部署上的区别
(没有手撕代码,面试官太好了,杭州的,答不上的问题会仔细讲解为什么这个问题需要我们知道,全程面带微笑!当时甚至想去杭州追随他...)
OPPO
2020-08-03 一面,视频面,28分钟
- 自我介绍
- 讲一个做的最深的项目
- 国密相较于国外的密码算法有什么不同?
- HTTPS还可以从哪些方面改进?
- 使用HTTPS传输的数据还需要再进行加密嘛(本身已经加密了,无需再加密,答一些场景下,如密码的传递可以转为计算hash传输)
- ArrayList和LinkedList不同
- HashMap初始化设定容量10000时,如果往里面放10000个元素,会涉及到扩容吗?
- ConcurrentHashMap线程安全的原理
- Java线程安全的实现方式
- 场景设计,4个g的文件,里面是电话号码,机器内存只有2g,如何找到其中出现次数最多的电话号码;如何找到其中出现次数前N的电话号码?
- 区块链技术现在存在那些不足?
- 一些安全相关的问题直接说没涉及过,面试官就直接跳过了
2020-08-06二面,视频面,约25分钟
- 自我介绍
- 介绍项目
- 介绍项目的项目内容及项目职责
- 项目里面遇到了什么难点
- 问另一个项目的项目内容及职责,怎么实现的
- 平时有没有涉及到攻防类技术,答没有就没追问了
- 平时会不会学习一些职责之外的技术,答Serverless
- 觉得自己有什么优势
华为优招
HR线下来宣讲的时候当场面试考察了才进入的优招,也就算一面了
2020年8月21日(zoom视频面)二面
- 手撕:合并两个有序数组,写完验证通过后给面试官讲思路,分析复杂度
- 然后开始撕java Java对象创建方式
- 接口和抽象类的区别(继承和实现,里面能否包含方法实,不能多继承,可以实现多个接口)
- 浅拷贝深拷贝
- Java ArrayList LinkedList区别
- HashMap原理(讲的不深)
- JVM内存结构,每个区域都是存放什么内容
- 堆的内部结构,新生代GC过程,如何判断对象是否应该GC
- 常用垃圾收集器
- 多线程:创建线程的方式
- Java项目设计原则,如果你看到一个项目,怎么去区分它是不是一个好的项目(Java类的设计六大原则)
- 面向对象和面向过程怎么理解的(需要再看)
- 项目架构讲一下,自己的职责
- Spring boot的设计思想
- TCP UDP区别
反问应该学习的点:面试官说了一下他们在社招中会要求面试者掌握的点:Spring框架原理,数据库原理,分布式组件,项目设计原则(理念)
2020年8月21日(zoom视频面)三面(主管面)
- 自我介绍,学习情况,获奖,爱好,职业规划
- 介绍项目架构,角色
- 对云安全的理解...(?)
- 对安全发展方向的理解(整了个mpc来答),又追问里面会涉及到哪些核心技术
- 家是哪里的?对工作地有什么期望没?
- 反问HC多不多,答择优录取,只要够优秀不怕HC不够...
需要学习啥:Java/C++语言、云计算/云安全需要深入理解、云服务的开发模式、Linux开发
百度
这里就只有一面记录了,二三面考察的创新能力,理论知识相关还比较多一点。百度的面试体验都挺好的
百度SRE提前批一面(电话面50+分钟)
面试内容主要围绕Linux,网络,Java,区块链,做的项目几大方向:
Linux:
- 如果想要查看Linux主机的资源占用情况,可以使用哪些命令
- 如果想查看CPU信息可以使用什么命令
- 你是用Linux shell编程都用在什么场景
- docker和虚拟机的区别
网络:
- 如果你在家里访问百度访问不了,可能是什么原因造成的?(运营商网络问题,DNS配置错误,DNS劫持,服务器错误-看看返回的状态码)
- 域名是如何解析为IP的
- TCP为什么是可靠的传输协议
- TCP三次握手过程,为什么不是两次?不是四次?
- curl基于什么协议 (http),http GET POST有啥区别
- http和https有什么区别
- 常用的http状态码
- 讲讲公钥和私钥
Java:
- 抽象类和接口有什么区别?
- HashMap和HashTable的区别(线程安全性,扩容机制,初始容量,key为null),继续追问两者在遍历的时候有什么区别?(hashmap遍历基于迭代器,hashtable可以基于迭代器也可以基于枚举)
- 讲讲Java的GC
区块链:
- 区块链底层都有哪些核心技术?
- 如果区块A和区块B到达两个区块链节点的顺序反了,这个问题如何解决?
项目:
- 介绍一下你做熟悉的一个项目
- 你的工作和贡献?
- 项目完成的难点在哪里
交流
在北京的工作体验怎么样?回答就是在北京百度的话压力还是不大,待遇也比较好,双休
SRE运维技术栈:主要是Python,Shell和Go,Java也有但是就比较少了
部门的主要工作:微服务改造(RPC, Service Mesh?)和云原生改造
京东
京东正式批一面(2020-09-04 电话面,31分钟)
- 自我介绍
- 项目中你的高扩展性架构是指的什么,怎么实现的?
- 你Java学的怎么样,如果让你打分的话你打几分
- HashMap的原理
- HashMap是线程安全的吗?ConcurrentHashMap是怎么实现的?
- 如果要用HashMap来实现LRU的话怎么实现?说一下思路
- 如果要用Java来实现一个消息队列的话,你怎么实现?(答链表,类似LRU那种,或者基于阻塞队列,不知道是不是还可以wait+notify?这个没说)
- 反射了解嘛?讲一下
- Java的多线程用过嘛,答项目里用过Java Stream的多线程,然后问实现线程的方式?
- Synchonized关键字的实现原理(就讲了锁的升级,没细讲也没追问)
- 讲一下数据库的索引有哪些实现方式以及各自的特点
- sql如果查询慢怎么调优(讲了下项目中去掉外连接查询,mysql是有命令查看sql执行情况的,忘了)
- Linux查看某个端口是不是开启了可以使用什么命令?
- 还投了哪些公司的?有收到offer了嘛?
- 反问京东在哪(世外桃源?)答西部智谷;
京东正式批二面(2020-09-07 电话面,30分钟)
- 讲一下最熟悉的一个项目,目标和架构,难点,怎么解决的
- 项目里说到Linux,说说Linux的内核态和用户态
- Linux虚拟内存和物理内存都是什么?为什么需要虚拟内存?虚拟内存如何映射到物理内存?
- 进程间通过虚拟内存实现了地址空间隔离,那他们之间要通信的话怎么办?(管道,消息队列,信号量,socket)具体说一下管道怎么通信的?
- Java GC都有哪些算法?都是怎么实现的?
- CMS收集器的采用的什么算法?CMS收集器GC的过程?
- CMS收集器有什么缺点?
- CMS收集器你说到是用的标记清除算法会产生内存碎片,那为什么不使用复制算法呢(答的是没有办法做到并发)?如果要你来改进复制算法,让它可以用于CMS实现并发,你怎么设计?
- 复制算法会导致对象存放地址的变化,如何修改对象的引用指向新的地址?
- 讲一下TCP协议?TCP协议是如何保证数据包到达顺序都正确的?假设发送方发送了A,B,C三个数据包,而接收方只收到了B,C两个数据包,这个时候接收方和发送方会怎么处理?这个过程中的滑动窗口怎么变化?
美团
不知道咋的就只记录了一面面经呢,我咋记得我都记录了的哇...
2020-09-15 一面,视频面,41分钟
- 自我介绍,技术栈,学习的课程
- 学习了比较多密码学的东西,那聊聊密码学吧,如果服务端和客户端需要传输用户名和密码用来登陆,怎样确保用户名密码的安全性?(https,http两个方向)
- https tls密钥协商的过程?基于RSA和基于DH,客户端如何保证服务端就是真正的服务端(CA)
- 如果你选择一种密码算法来做加密,你会选择哪种算法(AES256,AES128,SM4),AES128和AES256区别在哪里,除开密钥长度呢?
- 项目:问其中一个项目都用到了哪些技术栈,终端数据是怎样传输到后台的
- 聊聊java相关的问题:下面的代码输出什么
int[] arr = new int[10]; System.out.println(arr[0]); Integer arr2 = new Integer[10]; System.out.println(arr2[0]); System.out.println(arr2[0].toString())
- 如果有一个直播场景,一个人直播,两个人看,你使用什么传输层协议来实现?为什么使用UDP,它相比TCP的优势在哪里?如果是一个人直播,一万人看呢,你又怎样实现?
- 如果有一个一对一视频聊天的场景,类似微信这种,你又使用什么协议来做?使用TCP的传输速度相比UDP为什么慢?
- SQL/数据库
第一个数据库大题:
问题1:有个user表存在id,phone,passwd等字端(面试官那里有建表语句)
如果想要phone字端是唯一的,怎么修改?(添加unique)
添加完unique以后查询效率会怎样变化?
问题2:还是上面那个表格,如果现在表里面已经有了很多数据,其中phone字端已经有了一些重复,你怎么找到这里面的重复的phone?
答全部查出来,然后遍历进行count,面试官问你都全部查出来了为什么不直接在内存里直接去重呢,于是回答使用set,
继续问set查询的复杂度期望是多少,为什么是O(1), 不是会有hash冲突吗?
最后面试官自己写了sql可以实现,依稀记得是,可以验证一下(已验证,就是这个)
select phone from user group by phone having count(*) > 1;
第二个数据库大题:
user表有 name 和 id 两个字段
线程A:
start transaction;
insert into user values("zhangsan", 5);
线程B:
start transaction;
select * from user where name = 'zhangsan';
题目不知道写对没有,考了两个题目,一个考察读已提交,一个考察可重复读。
都是问线程B能不能查询到数据?
(如果是可重复读则查询不到,如果是可重复读一下则可以查询到
如果是序列化则线程B都无法访问user表了)
反问业务,面试官答餐饮业务,to B的,商家解决方案;流程,如果有后续的话周五左右二面。
体验贼好,不会的面试官老师疯狂提示,面试了这么久第一次感受到被面试官提示的感觉...然后每次回答面试官会反馈答的对不对,不对会提示如果都提示还不出来的话他会给出答案。
总结
不知道为啥,我记得我记录的挺多的呀,怎么都没了。。。我能记起来的就直接放到上面的表格里吧
总结一哈,就是必须的清楚自己的优势所在,比如我做了两个项目的负责人,这是面试官一定会问的,一定要清楚成为了负责人以后与一个普通成员区别在哪里,哪些东西是作为一个普通成员学不到的。另外因为我做过区块链方向,看过很多论文,所以我在密码学理论方面比其他做开发的同学扎实,面试官常会问到HTTPS,进而问到加密算法,这就可以作为一个引导面试官到熟悉领域的口子了。
最后,作为一个java程序员,基础扎实是想要进大厂必须的,参考我的经历,我觉得可以从Java语法、集合框架、多线程、JVM这些方面去准备,另外就是必备的数据库和操作系统相关的基础,尤其是操作系统看了我感觉我升华了...
最后最后,一定要尽早准备!!!如果能去大厂实习的小伙伴尽量去,如果不能实习就尽早准备基础,刷题,整理自己做的项目,最晚五一节以后就要开始复(yu)习(xi)了,我就是准备的太晚后面项目也到关键节点就只能边做项目边找工作了,本来前面有一大把时间的。。。
最后最后最后,又想起来一点,死磕成都的小伙伴们也没必要像我这样大厂都投成都,这也是我本届秋招最大的战略失误,选个三四个真想去的hc稍微多的针对性准备就可以了。像at这种成都基本都没hc,所以相对机会很少,还是应该投投总部体验一下,如果拿了那就会是你跟成都岗位argue薪资的资本(这个很重要,因为每个公司在谈薪前都会问你手上有哪些offer)。
最后最后最后最后,庆幸自己最后有个挺好的去处,也希望大家都能拿到心仪的offer哇!
#校招##Java工程师##招银网络##OPPO##TP-LINK##百度#