这份面试题是交流群里的一位在国企5年的非全研究生整理的,他国企车间流水线工作5年,后面读了个非全研究生,最后收割了腾讯百度等大厂offer。今天先分享他的面试题,下一篇会讲讲他的转型之路。

 

 

旷世

 

1 tcp滑动窗口 发送端接收端的处理细节,窗口为0时怎么处理谁主导谁

2 进程通信的方式,共享内存的实现机制

3 Linux文件系统和目录系统的权限区别

4 算法题 a,b两个有序数组,找出第k小的数,logk,二分查找,1个小于怎么办?

5 日志统计用shell实现

6 mr的执行过程,hive的执行过程

7 mysql事务的概念,可重复读是怎么实现的

8 spring的aop是怎么实现的,jdk动态代理是什么

9 RMI有了解吗

10 java中锁的实现方式都有哪些,有什么区别

11 项目的架构图画一下,数据之间是怎么传递和交互的

12 rpc和http的区别

13 多线程下,1个线程崩溃了,主线程会不会崩?

14 项目的配置容量是怎样的,性能要求,设计目的预期达到哪些标准?

15 solr和es的区别是什么

16 tcp的三次握手和四次挥手,为什么

17 zk怎么保证数据一致性

18 rabbitmq的queue和exchange怎么设计的,fanout模式是什么

19 缓存,l1 l2 page,redis

心得:

1 简历就是考察范围,要对简历上的东西知根知底

2 注意一下底层实现的原理和细节,多问几个为什么要这样做

 

 

美团

 

项目qps是多少

Redis数据库里缓存的是什么

数据来源,怎么导入的

做过并发量的测试吗

涉及到事务机制吗?哪些业务涉及了,怎么处理的时候分布式事务怎么处理,自己本地的系统怎么处理的事务?

Spring怎么实现的事务

 

 

阿里电话面试

 

项目难点

MR流程(会,文档中有写)

MR优化选项配置(会,文档中有写)

数据倾斜处理,大表join小表(不太会,当时没细看)

hive的hql逻辑是怎么修改的,从而解决了大表join小表的数据倾斜问题(不会)

MR选项优化后,以及hive解决数据倾斜后性能提高了多少?(不会,说是测试负责的性能指标,我这里不太清楚)

系统的架构设计是谁负责的?你们讨论系统的设计过程中,你对架构设计方面有没有不同的意见和想法?

沟通过程中有没有意见不一致的情况?

团队规模(10个人,5后端2前端2测试1架构)

 

 

vivo

 

Dubbo熔断和限流 机制有了解过吗?原理是什么?限流是怎么处理的?

(我说了下服务降级,熔断和限不太了解)

 

Linux 读取一个以制表符分割的文件,取出每行第3个位置的数字,并排序,写出来

(我说用awk sort指令,具体的不会)

 

Linux如何查看io情况,如何查看内存情况

(io不会看,内存我说可以用top指令去看)

 

Redis用的什么模式,读写分离怎么做的

(这里我说的用主从架构,读写分离我不知道细节应该怎么说,就说的主负责处理写请求,并同步到从服务器上。从服务器处理读请求)

 

如何设计一个分布式系统的全局唯一id生成器,不能用数据库,也不能用缓存数据库

(我说先提取业务中的一些信息,比如时间等,作为id中的固定信息,以后尾部添加一个序号,从小到大排,同时内存中维护一个set,来检验是否有重复;面试官说那你应用宕机怎么办?我补充了下可以考虑进行持久化,面试官没再说什么)

 

RabbitMQ有哪些组件,怎么传递的,消费者连接的哪里,生产者连接的哪里(我说有生产者,消息中间件,消费者,再具体些说有消息message,路由器exchange,队列queue,先是生产者生产消息,发送给exchange,然后exchange根据消息的属性和分发规则发送给相应的对接queue,消费者从自己绑定的queue中取出消息进行消费,面试官说让我回去再好好看看,说的不对。。)

 

zk如何避免脑裂 脑裂产生的原因 3.46版本后解决了脑裂问题,对这个算法有了解吗?

(只会脑裂的定义。。)

 

排查过java错误吗?比如线程卡死,可能有哪些原因,怎么分析原因,怎么定位错误?(用jstack死锁,怎么查到死锁的线程?死锁关键字有哪些。还可能有哪些原因?)

 

垃圾回收新生代和老年代用的什么算法,为什么

Spring用过的注解

 

 

头条

 

订单超时怎么处理

上传文件,后台计算耗时怎么办

最小栈

0-100,99个数少1个,怎么找出来

项目怎么设计的,怎么交互的,数据怎么流动的

 

 

新浪

 

1.如何把hive表快速导入到redis中

2.一张表记录了用户uid和博文id,另一张表存了所有的博文id和对应的tag(多个),统计每个用户感兴趣的所有tag和tag次数(后来提示说考察窗口函数)

2.拓展  排序问题,一个集团有许多子公司,希望按照省份和分数进行排序

3.一张表存了今天之前的所有用户(6亿),一张表存了今天登录的用户(1亿),问怎么快速找出新增用户

技术栈:hive 德鲁伊 cleanhouse,建议刷一刷leetcode sql

 

 

度小满

 

1.HashMap相关问题(为什么长度是2的幂次方?多线程下可能出现死锁的原因?树化阈值多少,为什么?)

2.类加载机制,双亲委派模型,哪些情况需要破坏双拼微派模型,原理是什么?SPI了解吗?

3.GC相关,GC roots都含有哪些

4.线程池相关,各个参数都代表什么

5. ThreadLocal用过吗?使用场景都有哪些?

6.Dubbo中用zk作注册中心,zk会有哪些问题和隐患(我回答脑裂,面试官跟我讨论了一会,最后得出结论脑裂并不是很大的问题,因为Dubbo本身注册中心即使挂掉,消费者也能通过本地缓存调用生产者的服务)

7.分布式CAP了解吗?zk主要实现的哪2个?

8.Dubbo的拒绝策略有哪些,怎么实现负载均衡

9.MQ在项目中的应用,都有哪些数据

10.Redis的应用场景,存了哪些内容

 

 

某知名外企

 

先现场做了套笔试卷子,以选择填空为主,大部分类似于一个字符串,各种拼接,作为参数传入方法各种修改,最后问输出的内容是什么。有3道编程题,都很基础,一个是查找文件,一个是用循环的方式实现斐波那契,一个是个业务场景题,给一张数据表和一个业务场景,让实现增删改查的操作

 

针对项目的发散性提问,比如根据你的项目假设一种可能出现的应用场景,让你想想怎么设计解决方案会更好。

问了些Java相关的基础(对象放HashMap需重写哪些方法,ThreadLocal,其他的想不起来了)

zk相关基础(Zab协议,其他的分布式一致性算法)

用英语解释一下什么是并发编程,什么是死锁

 

--end--