暑期实习 字节待入职 蚂蚁和美团在流程中
-
牛客项目 点赞如何实现的,Redis + MQ异步,难点来了,用户刚点完毕,又立马点,假如发生线程切换,后一个操作的消息先发出去怎么办?
-
LRU
-
点赞,评论数量是怎么统计的,我这都不会,难受,其实就是加个字段
-
简历上的 了解常见网络攻击,问了个女巫攻击
-
rpc 一致性hash是怎么实现的
-
为啥用 Redis, 其实可以引导到八股文的,我居然说体验好
-
算法 300题 LIS ,最优解 二分
一面
-
项目细节
-
TLS握手过程
-
arp 欺骗
-
RPC 协议设计,如果文件很大,或者传视频怎么办呢 我的回答:借鉴 http 的文件压缩,视频分块,范围请求
-
RPC 限流,我用的漏桶参考的网上的,其实大部分代码都是错误的,大家好好想想,为什么令牌桶可以限流,漏桶是怎么平滑流量的 然后分布式限流如何实现,我回答的用Zookeeper,其实Redis才是比较经典的
-
全局消息如何设计,如何高性能,高并发
-
为什么用Netty,引申到epoll,然后epoll的各种方方面面的知识,如何知晓事件发生 —— 中断
-
算法 岛屿数量 ~~~
总结:主要是项目
二面
-
项目
-
epoll 的边沿水平触发
-
volatile 原理 lock 前缀, 第一个普通写,第二个volatile写,怎么禁止重排 storestore storeload 屏障
-
sychronized 是怎么实现同步的 —— 底层原理 entrylist,waiset
-
项目~~~~,瞎扯就行,非常细节,细节到表
-
分布式锁 如何设计
-
Redis string 底层数据结构 为什么是二进制安全
-
MySQL datetime 和 timestamp 的区别 :时区域问题 timestamp 跨时区有问题
-
sql 优化 很简单的order by优化,我是这么回答的
优化前 EXPLAIN Using filesort,表示需要排序,意味着 MySQL 会给每个线程分配一块内存 sort_buffer 用于排序,并且由于没有索引,会采用 全表扫描 + 排序的方式;查看 OPTIMIZER_TRACE 发现 ORDER BY 的排序方式是 rowid;这就有两个问题。(1) 帖子数量一旦比较多,sort_buffer 装不下,会用磁盘辅佐排序,导致性能降低。(2) ORDER BY 使用 rowid 排序是因为排序的单行太大,对于 InnoDB 来说,rowid 排序,意味着排序完毕后需要拿个主键回表,回表就意味着磁盘的随机 IO,也会导致性能问题。所以我选择了给 ORDER BY 的字段加索引,让其就按该字段有序的,并且由于使用了分页,故ORDER BY 后会加上 LIMIT,会使优化器倾向于使用二级索引拿到主键后回表的方式;虽然构建索引浪费了空间,但是节约了排序的时间。 优化后 EXPLAIN 使用的是走二级索引 + 回表的方式
然后面试官怕我继续发挥打断了我 ~~~~
-
算法 复制随机链表 面试官直接给我说思路了,可能是怕我写不出来,最后输入用例节点全是0,导致输出也是0,还以为代码写错了,面试官最后说,就先这样,bug先不找了,但还是过了
上面的问题看起来非常常规,但是深度到底层,从浅入深,是不简单的
三面
-
前面都没问JAVA,这次JAVA来了个全家桶,我还以为不问 JAVA
-
HashMap put 线程不安全没回答好 ——多线程的 put 可能导致元素的丢失。多线程同时执行 put 操作,如果计算出来的索引位置是相同的,那会造成前一个 key 被后一个 key 覆盖,从而导致元素的丢失 7 8 都存在;为什么二倍扩容;为什么是树化是 8
-
四次挥手
-
类加载
-
双亲委派模型的破坏
-
CMS G1 对比
- 算法 149
腾讯云一面
-
保证机密性应该是 加密(加密、对称加密、混合加密)
HTTPS 为什么安全,没回答好,应该从这四个方面来回答安全的四个特性:机密性 、完整性,身份认证 和 不可否认
-
100 万个数找前 100 大
-
根据快速排序划分的思想求解
-
容量为100 的最小堆
-
分块查找
-
先把 100 万个数分成 100 份,每份 1 万个数,先分别找出每一万个数里的最大数,然后相互比较,找出100个每组最大数字,类似赛马 ~~~
-
-
-
判断 40 亿个QQ号码,哪些存活
-
位图
-
腾讯云二面 项目 (无了)
-
Netty 心跳,我的觉得的是现实,定时任务放在 taskQueue,NIO 线程本身在不断轮询,所以不存在浪费线程吧; 嗯 ~ ,面试官应该在考我对 Netty 是否熟悉
-
使用 Promise 是因为,服务端是开启一个线程,异步执行,客户端线程必须同步等待(为啥不线程等待呢(面试官是这个意思,我觉得不能啊,必须要Promise 来传递结果,因为服务端线程和客户端不是一个线程,必须要容器传结果 ))
上两个没回答好
-
拆包粘包 粘包拆包是好是坏,不同角度来看
-
如何实现抢红包限流,每秒三次
-
Promise Future 区别
美团 80多分钟吧
没回答上的
-
线程池 我回答了 FixedThreadPool 等等,可能是让我回答 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor,线程池各自缺点(我也不知道) ,缺点我后来猜测的是,阿里开发手册不允许使用Executors框架,必须通过 ThreadPoolExecutor 方式,做到设置多少线程,心中有数
-
synchronized
-
volatile 这个我回答的MESI,他说不对
-
synchronized 和 volatile 区别
-
volatile 怎么保证可见性 太紧张了,没把 无效化然后下次强制从主存读新数据说错来 (没回答好)
-
CAS 原理 我靠,直接回答成底层原理了 —— 多处理器添加Lock前缀(1原子 2写回系统内存 3禁止重排),应该回答 当前值 = 预期,更新为最新值
-
锁膨胀 也没回答好,应该 为 Object 对象申请 Monitor 锁,让 Object 指向重量级锁地址,并且对象头所标志位改为 10 然后自己进入 Monitor 的 EntryList 阻塞;我直接说了两种锁膨胀的情况
-
索引失效
-
隔离级别
-
MVCC
-
意向锁 (面经永远的神,本来没准备,上午偶然翻了下面经,发现这个忘记了,又翻了下笔记(以为不是重点,就没复习,估计也没回答太好))
-
缓存穿透,雪崩
-
布隆过滤器
-
淘汰策略
让我作题,不至于吧 这么快,才25分钟就让我做题了,直接拉回来,继续八股;后来才知道,可能是觉得我作弊,没必要面试下去了,我吐了~~~,牛客,你咋回事啊,我心态爆炸了
-
Spring 生命周期
-
AOP 具体源码具体流程
-
CGLIB 与 JDK 代理区别
-
事务失效场景
-
隔离级别 (应该是隔离级别吧)
-
Redis 高可用 中的 AOF 刷盘策略
-
主从复制原理
提了然后JUC 没问了,怀疑我作弊 尴尬 ~~~~ ,可能出现 BUG 说我在切屏,牛客 还我清白,*** you
-
ThreadLocal 原理,存在的问题 value为什么可能导致内存泄漏 (我猜测的) ,到底是哪存在引用链导致没有被回收 ???? 后来想了下,会不会是Entry持有了 value,Entry 是局部变量,求解答
-
算法题 多线程打印,出了点 bug,主要是被牛客说我切屏搞心态了 题估计写了 10多,二十分钟