2021 春招总结,面了阿里,腾讯,做 Java 程序员真的没有春天吗
海外渣硕,从七月份开始准备秋招,历时四个月,陆陆续续投了 30 多家公司,数不清顶着时差做了多少笔试,无数个不眠的夜都在不断地怀疑自己中度过(菜鸡本鸡没跑了),收到的面试却仍然屈指可数,主要以大厂为主,结局虽不圆满但能看到自己的付出所带来的成长。
=======================================================================================
一、阿里 - 业务平台事业部(会员中台)- Java 开发(一面挂)
====================================================================================================
1. Java
重写 hashcode()是否需要重写 equals(),不重写会有什么后果
2. 并发
自旋锁和阻塞锁的区别
公平锁和非公平锁的区别
jdk 中哪种数据结构或工具可以实现当多个线程到达某个状态时执行一段代码
栅栏和闭锁的区别
如何使用信号量实现上述情况
3. JVM
新生代和年老代的 GC 算法分别是什么
标记清除和标记整理的区别
了解过 CMS 收集器吗
4. 网络
解释 HTTPs
HTTPs 为什么要用对称加密+非对称加密,相对于只使用非对称加密有什么好处
5. 数据库
给定一个表,其中有三列(员工名称,工资,部门号),找出每个部门工资最高的员工
6. 代码
LeetCode 863 二叉树中所有距离为 K 的结点
二、阿里 - 新零售技术事业群(业务平台事业部)- Java 开发(一面挂)
========================================================================================================
1. 框架
用过哪些 Java 开源框架
讲一讲对 Spring 的理解
看过 IOC 和 AOP 的源码吗
它们底层是如何实现的
用过其他什么框架
了解过分布式或者微
服务的开源框架吗
讲一讲对分布式系统模型的理解
分布式系统中有一个节点宕机怎么办
分布式系统如何实现负载均衡
2. 数据库
MySQL 和 Oracle 数据库有哪些不同
数据库有哪些锁
表锁和行锁的区别
哪些场景需要加表锁
插入一条数据需要加什么锁
分布式数据库如何保证数据可靠性
了解过 MySQL 的主从复制吗
=========================================================================================
1. 数据结构
B+树与红黑树的区别
2. Java
HashMap 的底层数据结构,局限性与线程安全
如何实现线程安全的 HashMap
Collections.sychronizedMap 与 ConcurrentHashMap 的区别
HashMap 与 ConcurrentHashMap 的性能比较
3. JVM
类的编译过程
类的加载过程
JVM 的内存空间
JVM 的 GC 机制
4. 操作系统
进程与线程的区别
进程间如何通信
共享内存与 Socket 的优缺点与性能比较
子进程从父进程继承了什么
什么是僵尸进程
线程与协程的区别
5. 网络
TCP 的四次挥手
TIME_WAIT 状态处在哪一方以及为什么需要它
TCP 与 UDP 的区别与可靠性
如何实现 UDP 的可靠传输
6. 数据库
解释 ACID 四大特性
原子性的底层实现
数据库宕机后恢复的过程
如何保证事务的 ACID 特性
MySQL 日志类型
7. 分布式
谈谈对分布式系统的理解
分布式数据库的实现
如何保证不同数据库之间的数据一致性
如何实现主从数据库间的同步
=========================================================================================
1. 网络
TCP 三次握手/四次挥手
TIME_WAIT 状态
网络延迟大的情况怎么处理
HTTP 请求到响应全过程(服务端)
HTTP 请求头及其作用
HTTP 和 HTTPs
HTTPs 的握手过程
========================================================================================
1. 一面
操作系统
讲一讲进程和线程
讲一讲多线程和线程池
Linux 的最大进程数限制
①. WEB
输入 URL 到页面加载的过程
后端怎么处理前端传过来的文件
②. JVM
GC 机制(GC 算法,分代收集,收集器,STW)
③. 代码
给定一个数组 a[N]和一个整数 P,求 a[i] + a[j] + a[k] =P,保证 i<j<k
2. 二面
①. 数据库
身份证如何有效建立索引
Innodb 索引类型
聚簇索引和非聚簇索引的区别
索引失效的情况
写一个分页查询
②. Java
JMM 内存模型
Classloader 双亲委派机制
讲一下 ThreadLocal
线程间如何通信
=============================================================================================
1. 一面
①. 操作系统
讲一下进程和线程
讲一下线程安全
②. 智力题
两个人抛硬币,先抛的人赢的概率
③. 代码
单链表排序,奇数位升序,偶数位降序
2. 二面
①. WEB
HTML,JS,CSS 的区别
输入 URL 到页面加载的过程
HTTP 的长连接和实现原理
②. Java
创建和终止一个线程
讲一下熟悉的容器类
ArrayList 中如何删除某个元素的所有相同元素
讲一下迭代器的实现原理
③. SQL
学生表 Student (S#,Sname,Sage,Ssex),课程表 Course (C#,Cname),成绩表 SC (S#,C#,score),查询平均成绩大于 60 分的同学的学号和平均成绩
④. 代码
Leetcode 283 移动零
3. 三面
①. 智力题+数据结构+代码
扑克牌的移动
②. 并发
评论