自我介绍
众所周知,越丰厚的offer审核得越晚,所以拿到两百万offer的我现在才来分享我的后端JAVA开发秋招总结。
个人背景:985中下游本硕,无大厂实习(小厂打杂),无竞赛,无相关论文,半科班(转计算机)。
拿到的offer: 腾讯,百度,字节,美团,老铁,shopee,VIVO,交通银行,招银,中国银行
几乎都是sp,3个ssp,年薪加起来超过两百万(原谅我这个标题党)
因为目标工作地点在广东,不喜欢去做游戏,所以网易等公司都没有投递,我也不喜欢海投,投了简历的就只有阿里挂了,华为泡了5个月还在泡?字节面了7次才过了,面试过程在这里。
对于银行(除了招银)来说,我的感觉是他们只看学历和笔试,每次面试都只问了1-2个问题。下文主要针对互联网后端开发的经验。
本科几乎没接触计算机,拿到这么高的offer讲真我是不配的,只能说是运气+面试的点正好都看到,面试面不出来的实力和本硕科班的同学是没法比的。
经验总结
之前多找实习,大厂实习转正很多 (没早找实习,都是泪)
尽量早点去实习,积累多一份经验
实习海投,很多时候玄学进,因为实习生要求真的不高 (北京懒得去,失去了大厂实习的机会)
实习感觉没用尽早跑路,不要有心里压力,没人在意螺丝钉的离开
正式招聘尽量早做准备,越早越好
准备好再投,千万别着急,不然提前批挂了一定会影响正式批,面评一直都在
尽量早投递(准备好的前提下,看面经能答出70%以上),提前批sp ssp 的机会要多好多
不在意工作地点的话尽量选择总部或者岗位多的地方,比如字节北京深圳,阿里杭州,腾讯深圳,老铁北京,
多多上海...像阿里广州,百度深圳hc少的很难进不去的不要乱投练手,面试官风格都不一样,"练手“相当于浪费时间,但是如果你心态不够好,可以多面试锻炼
不着急拒绝offer,拿到offer提前去实习,不行就跑路
项目很重要,几乎每次面试都会让你介绍一个项目,但是不要讲烂大街的项目,很败好感
算法很重要,大厂面试算法题过了很可能就过了,一定要重视。
不要主动说没关的事情,无关的比赛第x名之类的面试官没提就别说了
面试前看看我之前的总结(智力题和面经),大厂很喜欢出几道智力题看看你的应变能力
面试重点
面试一般分成5个部分,自我介绍,做算法题,面试官问问题,介绍项目,反问。
自我介绍
面试前查一下公司资料,比如背后是阿里还是腾讯,竞品是什么,发展空间是什么,融资状况,业务范围....
建议自我介绍短一些,只说基本信息和相关的经历就可以,千万不要长篇大论。
简洁地突出优势,如 竞赛、论文、实习、学历、项目
最后可以加一句投递贵司原因,结合之前查的资料,适当夸一下公司,给他你真的像在这个公司工作的印象
算法题
很多时候会是leetcode变种题,建议不要背题,一定要理解做出来
自己学得吃力的,推荐看左神的算法课,能省去不少弯路,也能省下时间去复习其他知识。
- 基础入门 : 排序, 链表,图论,前缀树,递归... 0基础先看这个(立减200 折扣码: A7zf1nB,或者点击(https://www.nowcoder.com/courses/cover/live/520?coupon=A7zf1nB))
- 算法基础提升 : 哈希,并查集,有序表,字符串算法(KMP、Manacher算法),滑动窗口与单调栈, 二叉树与树形dp,大数据与位运算题目,暴力递归,动态规划...(立减200 折扣码: Ap2vpbF , 或者点击(https://www.nowcoder.com/courses/cover/live/512?coupon=Ap2vpbF))
- 算法进阶中级班 : 贪心算法,二叉树、搜索算法 ,动态规划进阶算法,模拟-LRU缓存结构,线段树,TopKRecord结构... 较难的算法(立减300 折扣码: AeTBPMD,或者点击(https://www.nowcoder.com/courses/cover/live/501?coupon=AeTBPMD), 备战校招和准备找实习)
- 算法进阶高级版 : 困难题讲解,各种奇淫技巧...(立减300 折扣码: AiC45Jz,或者点击(https://www.nowcoder.com/courses/cover/live/493?coupon=AiC45Jz),冲刺BAT)
问面试官拿提醒,比如时间复杂度最优多少,能不能提醒一下...
先和面试官沟通思路,不要马上写
写完分析时间复杂度和空间复杂度,写注释
讲代码要把其他想法也讲出来,例如 “或者可以用hash/二分....”
面试问题
回答一定要抓住重点,面试题不清晰可以先反问,不要自己补充一大堆(背这么多暴露了)
面试问题基本分为以下几点:
- 计算机基础: 网络(tcp、udp、http),数据库(MySQL),操作系统(Linux)... 这是大厂最看重的基础,对非科班来说,没时间就看看相关面经,有时间看书看视频,对科班来说复习下应该没什么问题。 【最重要】
- Java基础:java基础语法,面向对象思想,集合Collection源码,juc, 网络编程,io , 新特性, JVM.... 这部分要求熟悉,可以看书,看视频,看博客。【很重要】
- Spring全家桶:Spring (ioc、aop)全家桶,Spring Boot,Spring Cloud,Spring cloud alibaba 这部分要求会用,知道部分原理 【重要】
- 常用技术、框架:Redis,Zookeeper, MQ , Dubbo,ELK ... 这些需要结合项目,非必须但是是亮点,通常面试官会问你用没用过xxx, 你回答用过他才会深入问 【加分点】
- 常见工具: Maven, git , docker, Linux命令行 , vim ... 【锦上添花】
- 项目管理,设计模式 【加分点】
介绍项目
简单地说这个项目是干什么的,解决了什么问题,你的角色是什么,用到了什么技术,为什么选用这些技术
说一下项目指标,完成度...
说一下项目管理,敏捷开发有没有
之后面试官会根据你用到的技术深入提问
准备项目不要搞烂大街(秒杀,商城),不要课堂小项目(小游戏,图书管理),稍微创新一下。
这里推荐牛客的java高薪项目,手把手教你从0到1构建牛客网,涉及Spring Boot、SSM(Spring、Spring MVC、MyBatis)、Redis、Kafka、Elasticsearch 等技术,理论+实践都有,还有项目部署监控以及性能测试,面试后端基本足够。(折扣码 AfvtMp4 立减100元 或者直接点击(https://www.nowcoder.com/courses/cover/live/246?coupon=AfvtMp4),完成课程还能返现金学费300元.)
反问
- 问一下公司发展,部门业务技术栈,建议学习知识... 一般3个问题就差不多了
有时间看书当然最好,但是时间不够怎么办?那就直接面向面试学习(看视频,看面经,看博客,看牛客上面的课...)
怎么高效地准备面试?
先看JD,改简历,用颜色/加粗 突出重点(JD提到的就是重点)
首先复习计算机基础,java基础,看书或者看面经博客视频
配合左神的课刷leetcode/牛客 编程题,按分类刷,300道就能应对自如,400道基本无敌,最好做2次以上,没时间可以想解法,不具体实现。
准备项目,不要秒杀,不要商城,不要图书管理系统,这些烂大街的项目很败好感,有都别写入简历。
- 根据项目用到的技术细看相对应的原理(看书看博客看视频),写入简历。
祝大家新年快乐,笔试顺利,面试顺利,谈薪顺利,实习顺利,工作顺利,加薪顺利,升职顺利,上岸顺利,结尾附上完整面经。
面试面经
字节跳动 7 面 (摘自之前的帖子)
飞书 一二面:
- 个人经历
- 项目
- 了解NIO吗
- IO模型 select和epoll的区别
- 拦截器,监听器和过滤器区别
- RESTful 和SOAP
- get / post 区别
- 怎么跨域
- csrf 预防,http/dns 劫持
- rabbititmp怎么解决漏发,多发? 持久化怎么整?
- redis 和mysql区别
- mysql设计表时怎么去提高性能
- 对称加密和非对称加密,RSA 具体说说
- DES 和 AES 区别
- HTTPS 证书是啥?加密内容?
- 可以伪造证书吗?中间人攻击能预防吗?
- tcp怎么计算时间,RTT和RTO ?
- UDP 伪首部多大,有啥,有啥用?
- 常见的拥塞控制算法 (BBR,RENO,BIC-tcp)
- 数据库范式 ?BCNF?第四第五范式?
- 索引失效什么情况?
- 怎么设计索引?
- DBA不知业务的情况下怎么设计索引?
- limit优化
- 联合索引最多多少个字段
- 数据库的事务隔离级别
- mvcc机制聊一下
- linux指令 Kill原理
- tcp 异常处理,什么时候有RST,
- 什么时候有PSH URG 的包
- 爬虫对抗的解决方案
- 团队成员矛盾怎么办
- 怎么说服产品
- 怎么说服测试
- 和组长分歧怎么办
- 做题
飞书 三四面:
- 项目相关
- Http1.1 特点,缺点
- http2.0 特点,缺点
- http3.0 特点,缺点
- QUIC 特点,缺点
- 对头阻塞 tcp http的角度,分别讲一下
- BBR 怎么快,怎么实现,和之前的有什么区别
- tcp 选项有什么
- tcp 首部多大
- 分片和分段区别
- tcp半打开和半关闭的区别
- udp 存在的意义
- 怎么线程通讯
- 多线程的创建,怎么退出线程,退出进程
- 线程池的参数
- 线程池的状态
- 死锁怎么预防
- 出现了死锁怎么办
- 银行家怎么实现
- 进程调度CFS
- 时钟调度算法
- 慢查询优化
- ThreadLocal场景应用,spring里有用到吗
- JVM 构架,垃圾回收
- 怎么设计一个日志系统
- 磁盘调度算法有什么
- linux 文件系统架构
- inode 有什么信息
- LINUX 怎么找文件
- Linux 怎么看端口,
- 看tw状态的进程load average 是什么,怎么看,怎么分析
- linux 怎么做io检测
- linux 不同发行版有什么区别
- 你觉得 linux 比win 好在哪
- 字节序,网络字节序是什么
- 需要主导项目怎么办
- 怎么设计测试用例
- 怎么总结工作
- 优点缺点
- 兴趣爱好
- 做题
技术中台一二面:
tcp,http,https等常见问题
项目人均秒杀,面试官不耐烦了
Innodb 是如何解决幻读的
redis cluster
16384为啥?
netty 模型
netty 优点
nginx 鲸群怎么解决
rabbitmq组建
dns欺骗怎么办? arp欺骗?CSRF攻击?xss攻击?syn flood攻击?应对方法
Spring Boot启动流程以及生命周期
spring 事务怎么实现
ipc哪个快
B树和b+树分别有啥作用
JVM的内存模型
GC回收器JVM调优参数配置
Java中各种锁聊一下,CAS机制
volatile有用过么,底层实现
数据库 有什么log ?
mvcc 的作用
事务的实现原理
做题
三面 :
- 讲项目
- ipc哪个快
- B树和b+树分别介绍
- Java中各种 锁
- CAS
- volatile
- 做题
腾讯 三面
一面:
java跨平台具体表现, 怎么实现
为什么选择java,和c++ 区别在哪里
介绍项目
网络编程具体调用
http版本区别
tcp和udp,怎样使udp安全可靠
tcp粘包? http 报文怎么读取,怎么区分head和内容
怎么跨域
对头阻塞讲一下
BBR 怎么实现
子网掩码是什么
C++继承和java 有什么区别
kafka 和rabbitmq 区别
kafka 为什么快,有什么优化
elasicsearch 分词器
垃圾回收算法,java 11 用哪种,有什么优势
lambda表达式意义是什么,java是动态还是静态
linux怎么看进程
Docker 原理
dockerfile copy add 区别
介绍docker-compose
介绍k8s
做题
二面
- https://www.nowcoder.com/courses/cover/live/246?coupon=AfvtMp4)
- 做题
- 问项目管理,介绍scrum,kanban
- 讲项目,介绍团队,负责什么角色
- 特长是什么,实习有什么收获
- 问排名,问成绩,为什么喜欢篮球,为什么喜欢红色
- CLOSE_WAIT和TIME_WAIT 区别
- MySQL的存储引擎
- 内存泄露
- 大量数据找前50%
- CAP是什么,BASE 是什么, 2PC 3PC 区别、
- DNS 递归
- 飞机智力题
- 堆排
- 做题
三面
- 讲项目
- http和https的区别
- 死锁是什么
- 僵尸进程
- 孤儿进程
- C++ java 范型区别
- 有没有女友
- 优点缺点
- 做题
hr面
- 遇到不配合的队友怎么办
- 遇到不配合的上级怎么办
- 遇到不配合的下级怎么办
- 遇到不顺心的事情怎么办
- 遇到不友好的同事怎么办
- 遇到刁难你的面试官怎么办
老铁 三面
一面
- 做题
- 古典概型
- 抽样算法,蓄水池算法
- 死锁活锁自旋锁
- 项目 分布式锁怎么处理
- 分布式怎么保证一致性
- 黑盒白盒测试,灰度冒烟测试,分别有什么指标
- b树b+树区别
- mvcc
- 三大范式
- 隔离级别
- 怎么优化sql
- 各种索引区别
- 分段,分片区别
- mq作用
二面
- 讲项目
- redis 类型,有序集合zset原理
- epoll poll select 区别
- 2pc 3pc 区别
- rpc 具体过程
- 怎么学习
- 怎么进步
- 除了程序喜欢干啥
- 为什么喜欢跑步
- 有没有缺点
- 为什么投我们公司
- 为什么不去竞品
- 如何看待甩锅
- 如何看待996
三面
- 有什么offer
- 你来不来
- 有没有问题要问我
美团 3面
一面
- 讲项目
- io, 0拷贝
- i++ 安全吗
- Nat 穿洞怎么实现
- 单例模式写一个
- 快排写一个
- jvm 类加载
- java 各种锁区别
- 银行家算法
- 进程通讯
- 递归爆栈怎么办
- hashmap 原理
- currenthashmap原理
- arrayblockingqueue 原理
- 写一个简单的arrayblockingqueue
二面
- 讲项目
- MYSQL 索引
- 数仓了解么,hadoop组件知道吗
- 网络层有什么协议,有什么作用
- 路由器在哪层
- smtp端口,redis,mysql,zk默认端口
- BIO 和 NIO 的区别
- jvm 作用
- jdk 常用分析工具
- 怎么处理内存泄露
- linux启动过程
- vim 怎么删除一行
- shutdown -r 和reboot 区别
- du 作用
- inode 有什么
- pcb 是什么。包含什么信息
- 职业规划
- 方向不一致怎么办
- 做题 leetcode 原题
三面
- 讲项目
- 有什么offer
- 选择bat 还是美团 ?
Shopee 3面 (最难)
一面
- 索引在什么情况下会失效
- 主从同步怎么做到,半同步说一下
- mysql 分布式事务
- binlog作用?
- mysql锁?
- mysql存储引擎区别,innodb底层实现
- limit offset大的时候怎么优化?
- redis 为什么高效?
- redis 为什么16384 个slot
- redis cluster节点间怎么通信
- redis 主从同步步骤?
- 增量同步什么时候可以进行?
- hyperloglog 作用?
- 布隆过滤器? 缺点?怎么改进?
- epoll为什么高效?有什么缺点?
- gossip协议?zab协议?
- raft 讲一下?
- paxos 讲一下,和raft 怎么选?
- 3pc 比2pc 不同在哪里?
- 雪花算法?怎么改进?
- 分布式事务?举个例子?
- 蓄水池抽样算法?
- 设计模式举例
- 讲项目
- 做题 约瑟夫环
二面
- 项目
- 在主机和容器上部署应用程序有什么区别?
- 介绍一下Kubernetes中主节点的工作情况
- docker 实现原理
- Kafka 消息是采用 Pull 模式,还是 Push 模式?
- Kafka 怎么提升效率?多讲一些
- kafka 怎么保证消息不丢?怎么保证有序?
- kafka 怎么同步?
- 消费者负载均衡策略?
- 怎么判定如何存在哪个broker
- zookeeper 实现分布式锁?
- zookeeper 高可用?
- nginx 高可用方案?
- Nginx与Ribbon的区别
- tomcat 定义了什么类加载器
- tomcat 和 jetty 有什么区别
- spring 事务隔离机制
- spring boot 启动过程
- servlet 和 jsp 处理请求过程
- spring aop 概念,优点?
- 微服务的好处?
- 如何实现动态Zuul网关路由转发
- hystrix 怎么实现熔断?
- 谈谈服务降级、熔断、服务隔离
三面
- 期待薪资
- 讲个项目
- 有没有其他offer?
- 反问?
中国银行
- 地狱难度笔试题 又多又杂
- 面试只问了sql 优化,索引类型
交通银行
- 笔试有点难
- 面试也是问数据库,游标有啥用,怎么实现分页
书单推荐
适合有时间的人看,更全面地掌握知识,这里只写几本必看的书
基础知识:科班一般上课都讲过一些,有时间尽量多看看
算法
计算机网络
高性能MySQL
UNIX环境高级编程
UNIX网络编程
深入理解计算机系统
Java 基础: 配合源码看,配合面经看,带着问题看
Effective Java
深入理解Java虚拟机
Java并发编程实战
项目所用到的技术:配合项目看
Redis设计与实现
Kafka权威指南
大型网站技术架构
项目管理:
Head First 设计模式
全部评论
(48) 回帖