天天看点

最新腾讯、携程、美团面筋-(尾部附带答案)

最新腾讯、携程、美团面筋-(尾部附带答案)

正常八股,难度简单。

redis 基本的数据结构;

redis 持久化策略;

JAVA AQS 基本介绍以及 jdk 中的应用;

数据库索引结构;

常见的排序算法,jdk Arrays.sort() 是怎么做的选型;

手写单例、手写链表翻转;

进阶八股,难度中等。

项目中 Jmeter 压测是怎么做的;

压测的时候前几次值一般偏低,知道是什么原因吗(懒加载);

数据库索引底层结构;

最左前缀原则原理,如何利用好这个原则;

进程间通信,线程间通信,基本原理和应用,JAVA 中的对应实现;

UDP 和 TCP 的区别;

TCP 面向流,那怎么解决粘包问题;

手写二分查找;

变数来了,面试官竟然给我的项目提前做了 Code Review,受宠若惊的同时也暗自感到不妙...

这个在缓存中找到用户的日志设置成 INFO 级别,有什么问题(啊这,应该是和日志级别有关吧,以为他要很底层的答案,只说自己木看过源码);

这个异常种类为啥是 RuntimeException(阿sir,这个类是我为了试试 Spring 异常处理注解写的测试类啊...);

你这个项目中缓存数据库双写一致怎么保证的,为什么不先更新数据库再更新缓存而是直接让缓存失效?从性能方面考虑下(这时候有点晕,其实能答出来的...);

全程脑子里都是 ???,可能是也没想到大厂的一线开发人员会这么仔细地看我一个轮子项目的代码吧 w(゚Д゚)w...

一道 100%,一道 45%,一道 81%;

面相和蔼的面试官,语气沉稳,相当好的一次面试体验。

项目中数据库、缓存双写一致是用的什么方案,有没有想过如果 redis 操作失败了怎么解决;

volatile 关键字原理,印象中 jdk 哪里有用到这个关键字,写时复制?能不能再延伸下;

熟悉的设计模式,从看过的源码里挑几个应用讲一下;

redis 底层数据结构,SDS 相较于 C 语言传统字符串的优劣;

这一面状态有点不好

假设 QPS 翻了 100 倍,你这个微服务项目有哪些需要注意的(就说了个网关限流,mysql 分库 redis 分片哨兵,hystrix 熔断降级都暂时被我忘了。。。);

JAVA 类加载过程说一下,假如两个类完全限定名相同但是类加载器不同,他们是重复类吗(平时张口就来的八股这时也背不利索了。。。后一个是确实不知道);

mysql 事务隔离级别;

常见的索引结构有哪些,哈希表相较于其他结构有什么优劣(答案也没有说全。。。);

kafka 怎么保证消息不会丢失(同样没说全。。。);

算法,最长有效括号子串(leet 32,写了 n^2 的暴力枚举,动态规划大概说了下思路);

反问环节看面试官回答好像对我并不是太满意。

面试官相当和蔼,不过全程没问八股。

你的这个秒杀场景里,使用了漏斗思想逐层过滤请求是怎么做的;

项目从单架构变为微服务,有什么变化吗;

网关限流方案呢(令牌桶);

怎么防止商品超卖问题,怎么保证缓存数据库双写一致;

新建场景:多机环境下如何保证无重复记录插入(我的方案可能有点平庸:分布式锁,拿锁后再检查重复,没有再插入然后放锁);

要是操作数据库过程出错了呢(大部分分布式锁都有的超时机制);

问题有些进阶,也没咋问八股。

AQS 原理,jdk 里的对应应用举例;

Redis 底层数据结构,比较下 Redis 的字典和 jdk1.8 的 ConcurrentHashMap(主要是扩容行为,渐进式 rehash VS 多线程扩容);

微服务项目用的哪个注册中心,怎么做到传入服务名得到对应的实例地址(Robbin 客户端负载均衡,讲了下大概实现);

看过部分 Spring 源码是吧,说说里面用到的设计模式(答了 Robbin 负载均衡的策略模式,以及 Eureka Server 里用到的装饰器模式,事务注解的代理模式,只说了个大概);

集合怎么做到一边遍历一边删除;

手写一个生产者消费者队列(一个普通链表,一把主锁绑定两个条件队列);

反问环节

我表现怎么样?

A:总体还行,看过源码还可以。另外感觉你很活跃啊,建议回答的时候手的动作少点,我的注意力差点被你手势吸引过去了(我:???( ̄(OO) ̄))。

除少数kpi面和hc满了随意面,大厂的面试质量一般都非常高,他们问的很多问题都相当有区分度(也可能是看似很基础的问题,不同的答案也会得到不一样的评价),所以平时的归纳总结真的很重要,试着把一些个人见解融入自己的答案。

继续阅读