校招面经

Created at 2020-01-20 Updated at 2020-09-28 Category 面试 Tag 面经

百度

一面

一面面试官人真的很好,我项目介绍这块真的太垃圾了,他都叫我慢慢说,画张图理清思路,我画完图说了一遍他都觉得我这个项目没啥特点,他就随便问,好多地方我就是没过脑子随便乱说,他就说我不能这么说,面试完了他还跟我说了很多建议,说我学一个东西不能就随便学一下,要去了解他的原理,还说很多中小型企业的人,都是停留在写业务代码的阶段,写个十几年都跟两三年没什么区别,哎。一共聊了一个多小时,估计我是他最后一个面试的人他也不着急,有时间就多说会儿吧。

  • 自我介绍,介绍项目
  • 项目中es的使用,写了一条sql语句,让我转换为es
  • 项目的难点
  • 在项目中学到了什么
  • 定时发送邮件怎么实现的 我说框架里的,但是最终会转换为 shell 脚本,他问我 crontab 用过吗,我。学过,没怎么用,我就记得他那个分时日月周
  • 队列怎么实现的,除了 redis 有用过其他的队列吗 我,没用过,知道一点,比如 RabbitMQ 他问我,RabbitMQ 又是怎么实现队列的呢
  • redis 有什么特点
  • zset 怎么使用
  • 数据库中什么时候要建立索引
  • 乐观锁和悲观锁,读锁是乐观锁还是悲观锁
  • mysql 主从复制
  • binlog 里存的是什么
  • 项目中数据库的量级多少 我脑袋一片空白,说了句不大,他说我不能这么说。
  • tcp 和 udp 介绍一下
  • 进程间通信的方式,并说出每一种的特点
  • 大小堆了解吗 用在什么地方
  • linux 内存泄漏怎么解决
  • c 语言学的如何
  • 算法 链表中倒数第k个节点,只能遍历一次
  • 算法 跳台阶
  • 单元测试了解吗
  • 在生活中和别人遇到冲突怎么解决
  • 觉得自己的表现怎么样
  • 给我提了一些建议
  • 有什么想问他的

二面

二面面试官拿到我的简历看了几秒就在笑,我???,他说你这怎么是群众,我,没交团费吧,我也不知道是团员还是群众了,反正不入党都一样,他说,24岁以后没入党才会变为群众,或者没交团费,幽默的面试官~

  • 又是介绍项目,我巴拉巴拉说完了,他。。啥也没问,估计他觉得这项目太没意思了
  • redis 里的数据结构 zset 底层是怎么样的
  • 链表怎么插入和删除
  • b+ 树是怎么样的
  • b+ 树的根节点是怎么存放索引的,我。。不知道,瞎扯了半天开始说聚簇索引非聚簇。。。他又笑我然后不问了
  • nginx 和 php 怎么通信的
  • tcp 和 udp
  • linux 问一个日志文件里,每行都是 key=xxx,如何计算出每一种key的数量,我在纸上先写了gerp。。然后写了个awk。。我是真不会写。他就说我用grep但是不知道xxx是什么,所以要先得到xxx,我说用awk,awk可以得到第几列的字段,但是他怎么写我忘了,反正能这么做,他说好,可以。那么得到以后如何去重呢,我想了会儿,说linux应该是有一个命令去重的,看过来着,他说有,但是我可以用别的方式,我就说,那php就是放到数组里,然后用一个函数去重吧。ok。
  • 他盯着我的简历,说,诶,发现一个有意思的了,然后又问我es。 match 和 match_parse 有什么区别,match 和 term 有什么区别。
  • 算法 反转二叉树
  • 算法 接雨水问题 哎,这个我看到过但是不记得怎么做了,临时想了半天给他解释了好久思路,最后他认可了,说了句挺聪明,然后就结束面试了,然后我就被小姐姐带走,小姐姐告诉我出门左转

奇安信

不想吐槽这个辣鸡公司,0好感,面试觉得自己像个犯人被拷问。后来又被拉起来面了一次,那次的一二面面试官态度都不错但是没问什么东西,最后开价太低拒了。

  • Mvc 解释
  • 面向对象
  • 单例模式
  • 闭包
  • yield
  • Self 和 static 区别
  • MySQL int 类型可以存多大的数字
  • Linux 命令 crontab ps
  • Xss csrf
  • Redis 怎么查看内存占用
  • rdb aof,rdb 磁盘上怎么写
  • Redis 数据类型
  • 32 位是多少字节
  • Nginx
  • Php 怎么起一个进程后台运行
  • Php 怎么返回一个状态码
  • Curl 怎么用的,怎么得到状态码
  • Php 怎么下载扩展
  • Redis 内部结构动态字符串
  • Redis 过期策略:惰性过期和定期过期
  • nginx 禁止访问目录
  • git 撤销暂存

美团 2019/12/31

转 Java 后的第一面,开头就跟面试官说我学 Java 才两个多月。。然后他问了挺多 Java 的问题,好多我就说没学到,最后他问我在不在北京,下周去现场面。然后两天后又告诉我没 hc 了。

  • 介绍项目
  • 分布式锁的实现
  • 分布式锁过期解决
  • 分布式数据库主从复制
  • 前缀树是什么 前缀树的使用场景
  • MySQL 死锁发生的原因和解决
  • MySQL 分别建立索引 a,b,c 语句 select ...where b=x,c=x,a=x 能不能用到索引,建立联合索引能不能用到,a=x,b>x 能不能用到,用到几个索引
  • B 树和 b+ 树的区别 b+ 树的优点
  • MVCC 怎么实现的
  • Linux cpu 满了怎么排查
  • 怎么查看占 cpu 最多的线程
  • Linux 怎么搜索文件中的字符串,写到另一个文件中
  • liunx 网络相关命令
  • Java == 和 equals
  • Java contentMap 线程安全怎么实现
  • 哈希冲突解决的方法
  • Java 异常
  • Java 类加载
  • 什么是泛型 泛型的使用场景
  • 面向过程和面向对象
  • 多态 父类如何调用子类的方法
  • 单例模式的用途 静态内部类实现单例模式的方式
  • 工厂模式的用途
  • 策略模式的用途
  • Get 和 post 请求的区别
  • 网页请求的整个过程
  • 说说自己的优缺点,对缺点的改进

字节跳动

最想去的公司,没想到投简历后不到半天就约面试了,1.5 号约的 1.16 又被我改到 1.19。一面结束的时候以为自己凉凉,因为算法题没想出来,没想到第二天 hr 约了年后二面。

一面 2020/1/19

  • 介绍项目
  • 分布式锁的实现 如果判断锁是不是自己的(value = 线程 ID来判断,面试官说线程 ID 不可以,问我线程 ID 长啥样, 不知道,你们实际用的是什么,记不清)
  • java 有什么数据类型
  • float 和 double 分别占用多少字节
  • java 有哪些集合 map 有几种
  • hashMap 怎么实现的
  • hashMap 怎么插入的,只是插入到链表不会变吗(大于8变成红黑树),怎么哈希的,怎么扩容的
  • ConcurrentHashMap 怎么实现的,分段锁怎么实现的
  • 数据库 索引怎么实现的 为什么用 b+ 树
  • b+ 树为什么左右节点用指针连接 我:b 树没有左右指针需要中序遍历 面试官:什么时候需要中序遍历
  • 为什么二级索引存主键 ID 不直接存数据位置
  • sql 语句怎么执行的,比如 select
  • 索引覆盖是什么
  • tcp 如何建立连接
  • 为什么三次握手 第二次握手后没有回复会怎么样 重发 会一直重发吗,我:有一定次数(不确定)
  • tcp 怎么保证可靠性
  • 拥塞控制的详细过程 在现代网络环境中,拥塞控制有什么问题
  • 设计可靠 udp
  • 如何判断一个字符串是否合法,括号配对问题,如 (() 非法
    • 时间复杂度 空间复杂度(我用栈 O(n))
    • 空间复杂度优化(用变量计数)
    • 如果 * 可以代表 ( 或者 ) 或者空怎么做 原题链接

一面 2020/2/3

哦,面完才知道,我重来了一次,这又是一面。小哥哥挺年轻的人也挺好的。

  • 介绍自己在项目里做了啥
  • 分布式锁
  • 面向对象的特性 多态怎么实现的
  • 三次握手的过程,为什么需要第三次
  • 滑动窗口是什么,干什么用的
  • tcp 和 udp 的区别
  • mysql 数据库事务的隔离级别
  • 事务隔离级别的实现
  • mysql 有哪些锁,如何加锁
  • 单例模式代码实现,还有其他方式吗。 静态内部类,枚举
  • 找出链表的第一个公共节点
  • 二叉树的公共祖先
    • 不用递归怎么做
    • 面试官提示:找到根节点到目标结点的路径(与剑指 offer 同思路)
    • 找到两条路径后转化为找链表第一个公共节点,写出找路径的代码

二面 2020/2/3

  • 上来就是算法题,还是我没做过的(只会剑指 Offer 的菜鸡),只能想出暴力解法,最后思路稍微接近了点答案,然后在面试官的提示下,死活想不出最优解。
  • 二叉树中和为某一值的路径。巴拉巴拉写完了,面试官问,为什么最后要 removeLast
  • http 协议是怎么样的
  • get 和 post 的区别
  • cookie 和 session,session 在多台不同服务器怎么办
  • 数据库的主键索引和普通索引的区别,哪个查询更快
  • 索引是越多越好吗,索引建多了会有什么问题,对什么操作有影响
  • 问我 passport 的项目,叫我说几个接口的实现,用户登录后,业务调 api 怎么判断用户是否登录。哦凑,每天光看基础什么业务都忘干净了

三面 20202/5

  • 项目介绍 分布式锁
  • 分布式锁除了 redis 还有其他实现吗,我说有数据库和 zookeeper,说了数据库的实现,zk 不了解
  • 团队之间如何分工
  • 题目1:链表奇数位升序,偶数位降序,如何改为有序链表
  • 题目二:百万的数据,找出最大的 100 个
    • 用最小堆
    • 如果这 100 万个数据都是 0-100 之间的有什么其他办法,用一个大小为 100 的哈希结构存储数据
    • 如果数据是 100 亿,大到内存存不下怎么办,我说就分次读取
  • redis 有哪些数据结构
  • redis 的有序列表怎么实现
  • 跳表有什么优势,比如和二叉树比较
  • mysql 用的是什么数据结构存储
  • b+ 树是什么样的,b 树和 b+ 树的区别,为什么用 b+ 不用 b 树
  • 题目三:有一个函数 random(5) 产生随机数 0-5,如何用它来实现 random(7)
  • 场景设计题:抖音点赞,QPS 是百万级,如何设计
    • 用 redis 做缓存
    • 数据最终写到哪:数据库
    • 怎么写:定期写入
    • 有没有不一致问题:机器出问题数据丢了就可能不一致吧
    • 怎么解决:redis 的持久存储 rdb 和 aof
    • 磁盘出问题怎么办,rdb 和 aof 都有问题:redis 集群,用多台 redis 保证高可用
    • redis 集群怎么设计的:一台写其他读

小米 2020/2/27

  • 介绍项目
  • rocketmq 的架构
  • brocker 是集群的吗 slave 挂掉怎么办 consumer 从哪里得到消息
  • 下游 消费了 consumer 后挂掉怎么办,执行了操作但是没有返回通知
  • 下游 A B C 中其中一个挂掉其他成功了怎么办
    • 通过定时任务系统创建延时回滚任务,如果其中一个下游未完成,则创建回滚任务发送给其他系统。
  • 介绍设计模式
  • 分布式锁 锁过期 锁误删 锁超时之类的
  • 数据库有哪些锁
  • delete from id <= 1000 和 select 出所有要删除的 id 后传给 delete 去删除哪个更快,id是主键
  • 数据量大的时候数据库分页操作有什么问题,怎么优化
  • 数据库事务的隔离级别
  • 可重复读是指什么 可重复读的实现
  • 数据库有哪些引擎,InnoDB 和 MyISAM 的区别,聚簇索引和非聚簇索引的区别
  • spring 的核心思想是什么,依赖注入解决了什么问题,类 A 依赖 B,B 依赖 C,C 依赖 A的时候怎么加载(循环依赖问题)
  • HashMap 的实现
  • ConcurrentHashMap 的实现
  • 介绍多线程
  • 分层打印二叉树

祖龙娱乐 2020/3/2

  • 事务消息的作用
  • Java 接口和类和抽象类的区别
  • Java 有哪些集合。HashMap 怎么实现
  • MySQL 事务隔离级别,可重复读的实现,MVCC 实现原理,多版本的数据存放在哪里
  • Spring 有什么特性,依赖注入的实现,假如有两个类都被依赖注入了,Spring 里面会 new 几个类
  • 设计一个缓存池(队列),最多存储 10000 个数据,每个数据存活时间 30 分钟,过期则丢弃,实现 push 和 pull 方法。
  • 有一个对象数组对应一个权重数组,随机取出最大的 10 个元素,权重越大取到的概率越高,但是权重低的也有被取到的可能性

字节跳动 3/5

  • 分布式锁是锁住一部分还是整个系统,既然是锁住整个,为什么不用消息队列
  • 详细讲下怎么用 mq 实现的最终一致性,还有怎么利用的消息事务
  • hashmap 的结构,讲到一半,不用讲了,你来写一下它的 put 方法吧,不考虑扩容,简单写下。。
  • Array 和 ArrayList 的区别
  • tcp 于 http 的关系,如何基于 tcp 实现 http
  • java 打开一个 http 流不关闭的后果 http://tacy.github.io/post/java-http-connect-unclose/
  • io 流是基于抽象类还是接口实现的
  • 数据库的乐观锁和悲观锁是什么
  • 乐观锁实现原理,讲到一半,来写一个乐观锁吧
  • java 的类中有什么方法
  • 线程安全是什么
  • voliate 和 synchorized 的区别
  • 假如有一个类 A 和一个 类 B,这两个类都有一个变量和一个自增操作,A 类的变量用 voliate 修饰,B 类没有,B 类的自增操作用 synchorized 修饰,他们都是线程安全的吗,如果都是,那为什么要用 synchorized ,voliate 不是更轻量吗,synchorized 有什么作用。
  • 8 个 CPU ,4 个线程,16个线程什么的。。问题我忘了,因为我不懂
  • 最后提问环节,我。。有什么学习的建议吗,怎么学习。面试官答:看官方文档不要看博客看源码。好的。。

阿里 支付宝 3/6

阿里的面试官真是一如既往的人好,去年我印象中也是阿里的面试官态度最好。
其实我觉得我的表现其实很一般,还是比较差的那种,但是他说,其实我的表现还是挺优秀的,作为一个还没毕业的应届生。然后因为他们要招的是实习生,就是21届的,所以我的情况比较特殊,但是他会跟同事讨论的,最后说虽然这次也许没有机会但是我可以加他微信,以后社招会考虑我的。

  • 介绍项目
  • 为什么使用消息队列,已经使用了 dubbo 了为什么还要使用 MQ
  • 使用模板方法模式重构有什么好处
  • 还知道哪些设计模式
  • 乐观锁和悲观锁 使用场景
  • 用 redis 实现乐观锁
  • 从 passport 这个系统中,做了哪些有挑战性的事,亮点
  • 如何防止恶意用户的攻击 限流
  • 使用什么方式限流
  • 使用 redis 限流的话,redis 可能就扛不住了,在 redis 集群里如果有一台机器挂掉会出现什么问题
  • 线程和进程
  • synchorized 关键字作用
  • 喜欢技术吗 想往什么技术深入发展
  • 想去哪个城市 为什么要离职
  • 问了下建议:对工作经历描述的不够流畅,沟通表达能力有待提高,对工作内容没有介绍出挑战点与亮点让他没有找到发问的地方

Shopee

一面 3/11

  • ArrayList 和 LinkedList 区别,使用场景
  • 堆是什么,数据结构,时间复杂度
  • 排序算法有哪些,归并排序时间复杂度,是不是稳定的
  • Map 有几种,LinkedHashMap 的数据结构,怎么实现的
  • 数据库三大范式 有哪些反范式的设计
  • join 和 left join、right join 的区别
  • 数据库事务 什么是持久性 隔离级别 幻读是什么
  • 进程和线程的区别
  • 线程同步
  • 页面置换算法有哪些 LRU 和 LFU 分别是什么意思
  • TCP 和 UDP
  • TCP 怎么保证可靠性
  • 拥塞控制是什么
  • 三次握手
  • HTTP 状态码有哪些
  • GET POST 区别 他们系统里有些 GET 请求 用了 POST 为什么
  • 乐观锁和悲观锁 CAS 的过程
  • Redis 分布式锁使用在了什么地方 怎么实现的 除了 Redis 还有什么方式可以实现

二面 3/19

  • 介绍项目
  • 介绍自己做了哪些
  • springboot 和 dubbo 特点
  • 用什么做的服务发现 zookeeper,zookeeper 内部原理
  • 用什么实现的负载均衡 知道哪些负载均衡算法
  • 不同消息队列的特点选型
  • rocketmq brocker 内部进程
  • kafka 的IO模型,多进程
  • redis 集群怎么做的
  • redis 单点故障怎么办 还有什么保证可靠性的方法
  • rocketmq 在使用过程中遇到了什么问题
  • 自己的职业规划
  • 对 shopee 的了解

中邮消费金融 3/16

一面

  • 什么是高内聚低耦合
  • 讲一下设计模式
  • 讲一下 Java 虚拟机
  • 讲一下堆的结构

二面

  • 消息队列如何保证读取时候的性能
  • 消息队列什么时机得到消息有没有被消费
  • 常用数据结构,数组会用在项目的什么地方
  • 多线程出现什么问题 怎么解决
  • 乐观锁和悲观锁

百度 3/24

  • 介绍项目

  • OOM 怎么定位问题

  • 内部类编译成 .class 文件以后是怎么体现的

  • 如何使 final 修饰的变量可修改

  • Java 里面使用精度很高数字的用什么类

  • 对一个自定义的类创建 HashMap 有什么要注意的(重写 hashCode 和 equals 方法)

  • 线程并发的处理方法

  • awk 的作用

  • linux 如何查看 cpu 使用量

  • 将一个数组去重后排序打印输出

途游 3/27

中信银行 3/30

字节跳动

一面 4/12

  • 介绍了下重构支付订单的东西,订单的状态机
  • ip 协议,DNS 寻址过程
  • https加密过程
  • 死锁怎么形成,java 代码里死锁的解决
  • 线程同步 (我说了操作系统的 java 的)那php里怎么实现(php?单线程呀。。)那多进程呢,怎么同步(不。。不了解,写php的我对线程进程一无所知)
  • 三次握手四次挥手的作用
  • 算法 旋转数组的最小数字
  • 线程和进程的区别 为什么进程切换慢

二面 4/12

  • 问项目中消息队列的使用
    • 我做的是生产者这边还是消费者这边
    • 什么是最大努力通知
    • 如何保证投递可靠(事务消息,半消息)
    • 下游消费失败怎么办
    • 消息重复投递怎么办
    • 消息id存在哪里,消息里吗
  • 分布式事务除了消息队列还有什么解决办法
    • 我说分布式锁,叫我讲个场景,然后说如果是两个数据库,从一个数据库里减金额,另一个数据库里加金额,怎么办
    • 好不容易想起了2pc,讲2pc,然后面试官提出2pc的问题,投票完成后其中一个参与者失败怎么办 (这里当初理解的不透彻,忘了,就扯 3pc,扯又没扯明白,面试官问我回答他问题了吗,很是尴尬)
  • 看我项目有个redisson,他说他不太懂这个redisson,给他讲讲(你不懂,骗鬼吧)
    • 如果有个线程执行时间过长超过了设置的超时时间被释放了怎么办
  • 对微服务治理架构的了解(Dobble Zookeeper)
  • TIME-WAIT 发生在哪个阶段
    • 为什么等待 2 MSL
    • 2MSL 大概是多久,现实中的时间(秒?毫秒,布吉岛)
    • 正常上网请求网页的时候,进入 TIME-WAIT 的是服务器还是客户端(指网页请求的那个服务器,主动关闭连接的一方会进入 TIME-WAIT,一般是服务器主动关闭连接)。那他等待的 2MSL 对他性能有没有影响(emm,时间久就有影响吧)问题又回到了多久,布吉岛。。
  • id 生成器怎么做 数据库分表
  • 聚簇索引和非聚簇索引的区别 一个表里可以有几个聚簇索引
  • 幻读是什么 mysql 怎么解决(我答临键锁,面试官问我刚才提到的mvcc是否可以解决)
  • 设计一个加权随机算法(思考加修修改改搞了好几十分钟,面试官也亏他有耐心)

三面 4/14

面试官态度非常好,没有压迫感

  • 问我有其他offer没
  • 设计一个String 转 Int 的方法,做成一个基础库
    • 判断负数、字符串、溢出
    • 我用的是res > Integer.MAX_VALUE / 10 || res == Integer.MAX_VALUE / 10 && pop > 7这种方式判断溢出,他问我有没有更优雅的其他方法,比如我这个为什么要判断最后一个字符,这个Integer.MAX_VALUE不就是最大数吗,我脑子抽了下,说那就直接加起来判断吧,我想复杂了,他说那要是加的时候就溢出了呢,我。。。那。。那还是就我那样判断吧。。
    • 为什么我一开始写的是抛异常,后来改成了return 0;我,运行的时候报错了,懒得改,反正觉得return 0也没啥问题,面试官:那要是人家就传 0 呢,我,那,那还是抛异常吧。
  • TCP/IP是哪四层
  • ip 和 mac 什么关系,
    • 为什么要有 ip
    • mac不可以划分子网吗
    • mac 属于哪一层
    • ip 属于哪一层
    • 端口属于哪一层
    • 端口的作用
    • 多个进程可以监听同一个端口吗
  • sleep() 是什么
    • sleep 是怎么实现的,我说运行态变阻塞态
    • 这个状态的转换是中断吗,一番思考,我猜是吧,他问我这么猜的理由,我就念了遍中断的定义,说看起来是符合sleep的
    • sleep 里面有个休眠时间,是如何实现的,怎么做到到了时间就唤醒。瞎逼逼了两下,不知道,就说linux有个crontab,内部啥原理,不懂
  • 实习的收获
  • redis 的原理是怎么学习的,看了源码吗。我说看书,redis 设计与实现。为什么要学习呢,为什么要学这个redis 的原理
  • 面试就到这里,有啥想问的,我又开始emm(回答每个问题的我都这个状态),他赶紧说,没啥想问的可以不问,emm,那,那没了。

Boss直聘

一面 4/21

  • static 修饰的代码块,执行顺序
  • final 修饰的基本类型,在 lambada 表达式里面能不能更改
  • Java 有哪些锁 synchronized 是哪种锁,可重入锁的意思
  • 公平锁和非公平锁的区别
  • 进程与线程的区别
  • Java 线程的状态
  • 数据库索引的数据结构
  • Java 基本类型的大小
  • 十亿个手机号里面,怎么找到一个手机号存不存在,用什么样的数据结构
  • 求一个数由哪些完全平方数构成
  • 怎么平衡工作与学习的时间

二面 4/30

  • java 集合体系
  • hashset 有一个user类要存入 hashset 需要做什么
  • 安全的 hashset
  • long access(String ip) 得到ip返回次数 并发环境下
  • 浏览器输入网址过程
  • cookie session
  • 乐观锁 悲观锁
  • http 响应字段
  • 数据库 索引 更新数据主键,唯一,普通的区别
  • 线程池参数
  • redis 数据结构 hash使用场景

字节跳动广告部门 4/21

  • Java 有哪些集合类
  • Array list 和linked list 扩容
  • Hashmap怎么插入,扩容
  • conrruent hashmap Hashset
  • 数据结构有哪些线程结构,非线性结构
  • 二叉树有哪几种 二三树?红黑树 b树 b+树
  • Java有哪些锁 实现原理
  • Wait与sleep
  • Cas是什么 是操作系统的指令吗
  • 线程状态
  • Jvm内存结构
  • 垃圾回收
  • Aop ioc 怎么实现的
  • Maven生命周期
  • Bean factory 和factory bean
  • Springboot与springmvc
  • 800万条数据,优化查询
  • 缓存雪崩
  • 大数据有了解么
Site by Cellophane using Hexo & Random

Hide