面经集合 | 这次换工作心得(字节、某米、某丰等)
写在前面
首先说下楼主经历,之前经验为互联网大厂经历,工作年限属于3-5年的范围。
以我面试的经历来看,面试官对于该工作年限的要求已经从编程基础、算法、常规场景变更为行业经验、行业业务、架构设计或者或是重点功能模块设计、中间件使用、框架理解转变,显然这个年限的招聘需求需要一个高级工程师甚至资深工程师而非入门只停留在简单coder的角色。这点转变是对于个人是必要的,如果没有从之前的初学者入门者的角色出来,在这之后的面试会很尴尬,除非你对薪资或者岗位的诉求就是入门。
这时候的面试,现场编程已不是必须,但仍有一些公司是必备,例如某米,某条。
针对于该年限的找工作的个人看法,无非两个选择:
-
深耕行业。例如你之前做电商,继续电商,之前社交,继续社交。
- 行业运作规则、商业模式、前景你已经有一定的大局观认识,后续的发展你已经有一定的基础,有机会去摸高。
- 业务有一定熟悉,代码上手更快,更易获得新团队的资源。
- 可以继续沉淀该方向的业务
其实这里并不是自己的主观选择,例如之前在电商工作,天天大促活动要加班,想换一下赛道;之前做EA,觉得tob没劲,更希望做toc的产品;
- 技术上可以面对不同的业务场景,学习这个业务下的面对复杂的业务场景,技术上怎么解决。
- 也许新赛道起飞(当然赚大钱的都是企业,但你也可以跟着喝汤呀)
- 新鲜。可以保持技术热忱
面经
某米:
1.JVM分区
2.hashmap1.7 1.8,详细讲讲resize
3.gc,垃圾收集器,年轻代,年老代
4.双亲委派,怎么破坏?破坏的意思何在?
5.redis,基本数据类型,跳表实现,如何get、set一个数据?通信模型?epoll?
集群fail-over机制,哨兵,一致性hash,get set一个数据的过程?
6.kafka,rmq区别,rmq顺序消费,事务消息,如何保证消息不丢?at least once?msg key和msg-id
7.io模型,讲讲多路复用
8.tcp,状态都有几个?停留在time-wait状态多了怎么办?停留在sync-recv?
9.mysql acid,当前读、快照读,事务隔离级别,mvcc,next-key lock,rr怎么实现的?
跟oracle的区别,引擎,引擎之间的区别,
为什么用b+树
mysql执行一条语句的顺序,各种log是怎么配合的,
10.beanFac和FacBean
11.spring bean加载流程
12.设计模式,用过什么,为什么用,好处?常见框架有使用设计模式的吗?举例?
13.线程池,讲讲worker工作流程,讲讲run和call接口对于exception的处理
14.aqs,讲讲reentrantlock怎么使用的aqs
算法题:
之字遍历二叉树
某飞:
1.spring boot启动过程,@springbootApplication
2.spring启动过程
3.jdk1.8新特性
4.A转账B需要注意?涉及场景?你怎么解决?
5.java常用数据结构
6.mybatis,一个sql执行过程?
7.上台阶有几种上法
某丰:
1.spring bean加载流程
2.spring循环依赖怎么解决?解决不了什么?为什么?
3.spring、springboot、springmvc启动流程,使用版本,新特性
4.你自己怎么设计springmvc框架对于请求到处理的流程?可能遇到什么问题?框架如何解决的?
5.jdk、mysql使用版本,最新什么版本,有什么新特性
6.service mesh概念,istio怎么实现的?sidecar模式是什么样的?怎么做染色分流?Envoy,控制平面,数据平面,你们公司会采用什么方式做微服务?集中的服务注册发现、sidecar模式、agent代理模式有什么区别,优缺点?讲讲agent模式具体服务怎么注册发现,怎么治理,怎么互相通信?异构系统通信怎么在上述模式中实现的?
7.雪花算法,时间回拨处理
8.docker的优势是?跟虚拟机的区别?为什么快?怎么跟linux系统打交道?服务端口怎么暴露,如何跟外部服务通信,如何跟系统通信?
怎么在linux下云时代是什么?云时代意味着什么?后续微服务的演进方向?如何看待微服务?
k8s?架构是什么样的?Master和worker扮演什么角色,具体工作是什么?
上述都有共通点,就不在每一part里面加了,就是一开始的项目环节,这个因人而异,但关键问题基本都有三问:
1.挑战点
2.为什么能成为挑战点?(解释下为什么这是个问题或者为什么是个复杂的业务场景)
2.怎么解决的