Hello,大家好。首先感谢大家点开楼主的这一篇文章。自我介绍一下吧,楼主16年毕业,3年半经验,双非本科,非科班出身。之前就职于一家金融科技公司,Java后端开发,近期于疫情之下出来找工作,在互联网寒冬和疫情之下,许多公司都减薪裁员,楼主有幸拿下了网易和滴滴这两个互联网公司的offer,最终入职了网易-杭州研究院,从事Redis缓存中间件研发,整个过程感受颇多,趁着清明假期,写下此篇文章以作总结和经验分享。
整体来说面试主要考察基础+项目深度+设计能力+算法。楼主会从年后面试的几家公司中来阐述这几个要考察的key point,但由于时间比较久,楼主只能把自己能回忆起来的说一下,有些比较基础的题,楼主回答的比较好,所以可能会被遗漏。
阿里-淘系技术部(五面挂)
一面:
技术我就不问了,我看你基础比较好,相信一些常规问题也难不倒你,这样吧你给我讲讲你的业务,讲明白了我就让你过。WTH???后来说了一大堆金融方面的知识,算是把我自己说明白了,最后让写了个笔试题,给发了过去。
- 笔试题:
给定一组数据节点,每个节点使用中括号括起来,多个节点之间使用半角逗号分隔,
如下所示:
[1-2],[2-3],[3-4,5,6],[4-],[5-8],[6-7],[7-],[8-2]
节点内部结构使用“-”分隔,前半部分为节点ID,后半部分为该节点指向的节点,
如果没有指向,则为空,多个指向节点使用半角逗号分隔;
给定任意一组数据,请计算节点之间是否存在环?
如果存在环,直接结束;不存在环,则打印出每条路径。。
二面:
- 工作中遇到最难的问题是怎么解决的?
- 分布式事务,RocketMQ事务消息怎么实现的知道吗?生产端出了问题可以回查,消费端失败了怎么办?重试。如果一直失败呢?加入死信,人工介入。那你直接提示用户成功吗?我觉得应该可以吧…
- Dubbo和Rest有什么区别?你说了这么多Dubbo的优点,照你这么说是不是都应该用Dubbo?对了,我还没问你Rest呢,你知道Rest吗?
- Http状态码知道哪些?
- 注解知道吗,说一说怎么回事?项目中用过哪些注解?
- Redis是怎么搭建的,为什么是3主3从,为什么不是2主2从,为什么不是4主4从?
三面:
- 说说你的项目经历了哪些系统架构的变迁?
- 用过Redis相关的一些中间件吗?
- 余数哈希有什么缺点?
- ConcurrentHashMap说一下
- CMS垃圾收集的过程?为什么要有初始标记,为什么不能在重新标记时一块给标记了?
四面:
- Spring中的bean经历了哪些阶段?
- SpringBoot说一下
- select、poll、epoll有什么区别,epoll有哪几种触发方式,各有什么优缺点?
- RocketMQ为什么能有这么高的吞吐量,除了你说的顺序写、随机读,还有吗?
- 玩过微博吗,如果让你设计微博的引擎系统,你打算怎么设计,推还是拉?
- 你在Linux下开发过吗?Linux有个tail命令,能实时输出文件的变化,如果让你实现,你打算怎么做?
- Linux的文件系统,让你实现,你会怎么做?
- 我感觉你的基础还可以,但是设计能力欠缺,可能跟你所处的环境有关。笑cry…真实到让人难以接受
五面:
HR+Bos