目录
- 1、背景
- 2、时间线
- 3、面经
- 小米一面:
- 拼多多一面:
- 拼多多二面:
- 网易游戏一面:
- 网易游戏二面:
- 网易有道一面:
- 网易有道二面:
- 4、经验总结
- (1)笔试
- (2)面试
- 编程语言
- 简历
- 计算机基础
- Linux
(emmm,后面有时间再补充一些推荐的资源)
1、背景
岗位:后台开发
投递的公司:腾讯、字节、华为、拼多多、小米、网易游戏、网易有道、虎牙
时间:2019年9月初 - 2019年10月底
结果:暂时签了拼多多sp
2、时间线
2019年1月(大四)决定转做后台开发岗,然后申了港科大的一年制硕士(为了有时间准备招聘)。2月开始学 Java,以及 Java 后端开发的常用框架(SpringBoot 等)。3、4月写论文。5 月到 8 月做了个个人项目,复习计算机组成原理、计网、算法,自学操作系统、前端开发等等。然后走正式批招聘,先试试水,拿个经验。面试中超级无敌多东西不会,只能每一场面完,赶紧学。下一场面试再现学现卖。
科大这边是2020年11月拿毕业证,所以2020年的秋招也还是可以参加。目前在微信实习(2019.12.24 - 2020.3.24)。
3、面经
下面是按面试时间来列出面经,有一些内容没有记录。
小米一面:
项目
实习经历,遇到的难点
synchronized,volatile
接口,抽象类
gc
二维矩阵,顺时针遍历
拼多多一面:
项目部署在哪里
Spring 为什么受欢迎
Redis,
集群,一致性哈希
快排,
以及用快排求top 100,复杂度O(N)
拼多多二面:
hashmap,concurrentHashMap
kafka 顺序放进去,是否会顺序处理
类加载的过程,有几种加载器
java 各种 io
加锁的内存开销
tcp拥塞控制
内核态,用户态
lru
页表
个人项目中 redis 用来干什么
编程:二叉树,不用递归,后序遍历(可以用栈或者 Morris)
网易游戏一面:
Redis 实现
elastichsearch
aop
ioc
tcp 四次挥手
mysql 使用 explain 来分析性能,key, rows
登录模块的密码传输,以及保存
linux 查找端口被哪个进程占用,某个套接字
被哪个进程占用
网易游戏二面:
es 实现原理,倒排索引,排序标准
elk技术栈,e 是elasticsearch
icmp
linux 命令
http 状态码
rewrite(例如用于 http 转到 https),redirect
网易有道一面:
http 长连接,短连接
get 和 post
cookie
数据库 第 一,二,三范式,事务特性
String,StringBuilder,StringBuffer
四种引用类型
autobox,unbox
网易有道二面:
介绍spring boot,redis,kafka(数据存在硬盘,因此容量较大),elasticsearch(倒排索引是什么),为什么用 mybatis,不直接用 JDBC
编程题(可以用并查集)
4、经验总结
可以的话,一定要参加提前批!!机会会多很多很多很多
(1)笔试
我是在牛客网上看完了左神的算法入门班和提升班。基本上就是复习了基本的算法,像排序、二叉树遍历、图算法、有序表等,还有一些常考算法,如滑动窗口、单调栈、并查集、动态规划。
还有就是刷了几题去年的大厂真题(牛客网上有,2019年6月的时候,还搞了活动,免费领上一年秋招的真题和答案,纸质版)。
(2)面试
主要问以下五个方面:
- 编程语言
- 简历上的内容
- 计算机网络
- 操作系统
- Linux
编程语言
我在简历上写最熟悉 Java。然后面试就会问 Java 的各种东西。比如常用容器的实现方式(HashMap、ConcurrentHashMap 等),StringBuffer 和 StringBuilder,static 和 final 关键字,多线程。
还会问 JVM,比如 Java 虚拟机的内存区域,垃圾收集,类加载机制,字符串是怎么保存的。
对于校招的后台开发岗,大多数公司不会限制编程语言,你有一门熟悉的就可以。
简历
第二个最常问的就是简历上的内容。面试官很多时候是按着你的简历来提问的,所以对上面的内容最好有一定的了解。我的简历上个人项目那里写着用到了 SpringBoot、Redis、Elasticsearch、Kafka 等东西,面试中就经常问这些东西的用法、原理、应用场景等等。
计算机基础
问的最多的是计网,尤其是运输层,其次是应用层和网络层。重点内容有 tcp 的三次握手、四次挥手(可不可以变成三次)、拥塞控制、报文结构,tcp 和 udp 的区别、应用场景,http,DNS,网络层的路由算法。
操作系统会问到进程、线程、内存分配、死锁等内容。
关系型数据库几乎没问到过。
Linux
最后还有就是 Linux 的常用命令,还有系统的设计原理,比如他的目录结构、权限管理、进程/线程等等。如果准备时间不够,最好也要搞清楚常用命令和权限管理。企业的开发和部署环境都是 Linux,所以这方面至少要懂一点点。