百度最新面经-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
5.算法题(挺简单两道):
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;形式:现场;
- 主要问学科发展,项目,设计理念,方法论等较上层面的问题;
- 最后聊了下程序员人生发展的问题等,整体还是挺愉快的。