【百度提前批】Java研发一面
先做自我介绍,技术栈,项目(一面电话面试50分钟)
技术栈介绍:Java基础,Redis、Mysql、Rabbitmq,Kafka、ZK、Hystrix、Storm SpringCloud微服务以及相关架构
面试官问题:
1.JavaGC说说一下
答:详细说明了GC算法以及老年代和年轻代收集策略以及年轻代对象如何到老年代
2.Java进线程说一下,为什么线程比进程资源调度快
答:balabala说了一堆,然后扯到线程内存共享相关
3.悲观锁和乐观锁解释下
答:分别说明了什么是悲观锁和乐观锁,并且描述了器内部实现,面试官叫停表示说到这可以了
4.TCP协议相关
答:这个没什么好说的
5.用户输入URL后处理流程
答:DNS解析,建立TCP连接,http或者https发送请求,后端接受请求处理结果返回,客户端数据渲染到模板呈现给用户
6.滑动窗口解释下做什么用
答:拥塞控制,并且知道算法
7.Redis数据结构,你平常常用什么结构,为什么读取速度快
答:表示用最多的是String,5种常用结构都说了下
8.Redis主从复制,集群模式
答:这个也没什么好说的,都答了下主从集群,redis cluster
9.RabbitMq相关,Kafka相关
10.零拷贝知道吗,解释下
11.Hystrix熔断降级策略
12.微服务四级缓存架构说了下,调用链路
13.看你发表了论文,推荐算法简单说一下,实现
做题:
1.两个链表找第一个公共节点
注:面试官提供编程页面,但是不好用,写到一半感觉太慢,于是把实现思路先给面试官说了:先统计2链表长度,长的先走,然后同步走,比较节点是否相同,相同则返回该节点,不同则返回空。询问面试官是否还需要继续写,面试官表示继续,没写一会,看了我写的代码表示不用写了,下一题,直接给思路,不写代码
2.m 、n问题,数组中m个不同数,给出所有n为长度的所有组合
注:刚开始没思路,想到了n重循环,暴力破解,但觉得时间复杂度太高没这么说,说的是2重循环加上回溯法。这个地方答的不是很好
以上,回答问题用了35分钟,做题15分钟