百度最新面经-Java 工程师
一、
百度一面:60 分钟
1、基础模块
java 中 Object 类有哪些方法,分别在什么场景下使用,== equals()的异同
java 基础类型与所占的长度
hash 的时间复杂度
String 不可变性与 Stringbuild Stringbuffer 的使用
set 和 list 的区别,你是如何选择的
基本类抽象类接口的异同
设计模式,如何使用的,讲了一下我对设计模式的理解
2、数据库模块
mysql 的使用
聚簇索引,非聚簇索引,回表
联合索引,最左匹配原则,联合索引不回表的情况
多表联查强制使用某一个索引
mysql 事务隔离级别,如何选定
缓存数据库 memcache 的集群模式,一致性 hash
redis 的基本数据类型
3、网络模块
一个 url 请求的过程
http502 406 302 的意义
三次握手 四次挥手
4、vi 编辑器 nginx linux 命令
vi 编辑器的两种模式,跳转到最后一行
nginx 的模块化,break continu 的区别,
linux 查看大文件,查看负载命令
5、项目
介绍了我在京东做的项目的一些优化思路,设计思路
百度二面:30 分钟1、java 基础
java 并发包的一些问题,队列,线程池的设计,为什么这么设计
gc 的模式,算法,内存模型等
类加载,自己实现类加载 问的都比较实用,如果不是自己操作过,基本上不好回答
2、数据库
主从复制 mvcc 原理 索引类型
redis 持久化 这块问的比较多,记不清了
3、框架
spring 框架的使用,使用了哪些注解
spring 如何如何解决他们的 bean 循环依赖的(这个忘了,三级缓存)
springmvc 请求流程
还有一些也记不清了,没问我的项目
一面结束就通知我第二天二面,但是二面感觉还行,有两个问题没回答好,其他觉得
都不错,时间只有 30 分钟,不知道时间这么短 是什么意思,希望这次能过吧。
二、
电话面试,面试官说话憨憨的哈哈哈哈(褒义词,很逗)
45min
1.自我介绍
2.介绍一下项目(15min)
3.设计题:用户关注和粉丝功能:(一,关注 二,取消关注 三,查看关注列表
和粉丝列表)10min
4.JAVA 基础 10min
4.算法题(挺简单两道):
1.查找两链表公共节点(记着答案直接说了)
2.有序列表,每一位都平方后去重后的个数
:例【-1,1,2,3】——>【1,4,9】 3 个数
第一反应哈希表,但空间复杂度有点高了,然后想了一会用头尾双指针往 0 逼近,找
绝对值相等的个数
5min 后 hr 来电话约晚上二面,希望有好运气哈
三、**自我介绍**
http 常用的代码
502 和 504 区别
mysql 索引
mysql 的 ACID
InnoDB 和 MyISAM 的区别
乐观锁悲观锁
HTTP 的特点
mysql 事务隔离级别及其作用
mysql 的主从同步
Java 的基本数据类型和占用字节
最左匹配原则
nginx 了解么
redis 的同步
redis 数据淘汰
RDB 和 AOF 的优缺点
AOF 是阻塞的么
分片数据会丢失么
一致性哈希算法
String 可以被继承么
final 的作用
阻塞队列
IO 模型和它们的使用场景 有几种 buffer
都会什么数据结构
分布式同步
平常用过什么设计模式?
OSI 模型第 4 层和第 7 层的区别,有什么协议
干过什么项目 项目用了什么框架 有没有分布式 大数据的经验
git 如何使用
常用 linux 命令
如何查看进程
awk
压缩包的命令是什么
使用过 memcache 么
都使用什么操作系统
mybatis 和 jdbc 的区别除了 Java 还用什么语言
大数据了解么
前端了解么
分布式了解么
项目的并发量是多少
有用什么框架么
上述问题由于没有经验所以都不会。。
算法
跳格子一次 2 到 3 格
excel 表格 第几行的行号是多少 1-26 行 abc…z 然后是 aa ab ac…az 以此类推
四、
百度凤巢 **Java **开发一面
面试时间大约一个小时
问项目、实习
hashmap jdk7 和 8 的区别,链表长度大于 8 转成红黑树,put 源码,和 hashtable 区
别
hashset 实现
concurrenthashmap 原理 7 和 8 的区别,深问细节
Java 内存模型,解释下各分区,A a = new A();a 存在哪(区分成员变量个局部变量)
垃圾回收算法,详细说分带算法,可作为 roots gc 的对象
类加载过程,双亲委派原则
线程状态
wait 和 sleep 啥区别
线程池,各种细节,参数,原理,阻塞队列,拒绝策略
三个线程 ABC,怎样保证顺序执行(我说了 join,信号量,最后让我用锁实现下)
synchronized 和 lock 啥区别,原理,公平锁与非公平如何实现(说到 AQS)
synchronized 锁升级
volatile 作用,实现原理
cas 原理,cas 产生的问题(ABA,占用 cpu)
索引有几种,聚簇和非聚簇,回表操作
索引失效情况
如何优化 mysql
mysql 存储引擎,区别索引用什么数据结构,为什么用 b+
事务特性
隔离级别
脏读,不可重复读,幻读,解释
mvcc 是啥,如何实现的?
redis 数据类型
redis 持久化方式,原理,效率,区别
AOF 持久化是否包含查指令
spring 说几个注解
ioc 和 aop 原理及解释
动态代理,jdk 代理和 cglib 代理区别,实现
spring 事务
tcp 三次握手,为什么,两次有什么问题
https 请求过程
最后说电面就不问算法了,最近会再联系你,等二面了再来更
五、
技术一面
时间:40m;
形式:现场;
自我介绍;
问题:
Thread;
equals 和 hashCode 等;
volatile;
JMM;
垃圾回收,分代等;
synchronized;
单例模式;
ThreadLocal;
jvm 栈空间分配;
TCP/IP 五层模型;
各层常见协议;
HTTP 的报文结构;
HTTP 和 HTTPS;常见的 HTTP 头;
数据库隔离级别等;
快排特点等;
堆排怎么找左子节点;
Linux 分割文本的问题;
cookie 和 session;
简单难度的算法题,LeetCode 有原题;
上面那个题怎么优化空间复杂度;
反问:
部门问题;
主要技术栈;
是否会存在调岗;
后续面试安排;
技术二面
时间:40m;
形式:现场;
自我介绍;
问题:
简单或者中等的算法题,LeetCode 有原题;
口述算法题,10 亿个无排序数取最大的 1000 个;
阻塞队列;
Java 接口抽象类;
线程池;
ThreadLocal;
手写两句 sql 题;
Spring Boot;
MySQL 两个引擎;
优化数据库;
Spring 配置数据库驱动,参数类型等;
Linux、Docker、Nginx 的几个问题,答的不好;
Redis 单线程等;
前端的一个问题,并没有复习;
反问:
为什么会问前端问题(因为简历写了,但我没复习,尴尬);
对我的建议;
后续流程;百度技术栈以及对应届生哪方面比较重视;
主管面
时间:44m;
形式:现场;
主要问学科发展,项目,设计理念,方法论等较上层面的问题;
最后聊了下程序员人生发展的问题等,整体还是挺愉快的。