岗位
Java后端,base北京
一面
时间
2022/11/7
内容
项目
- 你的项目挑一两个讲讲最大的收获
- 你对RPC的理解是什么
- 你的RPC框架有遇到什么困难,怎么解决的
八股
- 你对Spring aop的理解
- 动态代理和静态代理的区别
- mysql或者说数据库的锁有什么了解
- 系统运行过程出现慢sql,对该问题进行分析定位提出解决方法,你觉得有什么原因?
- mysql的索引分为哪些类
- 操作系统中的死锁指的是什么,有哪些必要条件
- 进程间的同步有哪几种方式
- 计网7层协议是什么
- tcp是哪一层的协议,跟udp的区别是什么
- ping指令是基于什么协议?假设同一台局域网下,A ping B,假如没ping通,有什么原因?
- 网络安全攻防你有了解吗?常见网络攻击方式、防范手段
- SQL注入是什么
- 排序算法的稳定性指的是什么
- 快排和堆排序是稳定的吗
- 不用+号,如何计算A+B的和,会用到哪些运算符?
算法
- 给一个奇数结点长度的链表,没有长度,如何得到链表中间结点值?说思路。
其他提问
- 你对于自己的职业生涯有什么规划?业务研发和大数据研发都可以吗?你偏向哪种?
- 你对大数据是否有兴趣呢?面试官说面了很多人第一次面到大数据专业的,意思是后端开发很多人竞争。
- 面试官说后端转大数据, 可能没有校招就大数据那么有优势。
后续
一面面试官本来打算帮我转到大数据岗试试的,但是没hc了,继续Java后端的流程。
二面
时间
2022/11/11
内容
项目
- 你的消息推送平台是以什么背景做的?有需求还是自己玩的。
- 通过这个项目你想了解什么东西?(DDD,面试官说DDD对于应届生来说远了)
- 你实习做了什么东西?(看到才2个月就不问了)
- 聊聊你的RPC框架吧。
- 你的RPC框架跟spring boot有什么关系?
- 你开发RPC框架最核心的模块,最关心的模块是什么呢?(我回答网络传输模块)
- 网络传输模块你选择了什么协议呢?
- 序列化你选择了什么方式?
- 你感觉对于一个RPC框架,最重要的是网络传输框架吗?有些RPC框架用的是http,你怎么看待?网络传输在整个传输的性能损耗中是影响最大的吗?
- 为什么RPC框架基于http不行呢?就像我访问百度可以用http一样。(回答了一堆但没抓住重点,面试官说效率方面没问题的,面试官认为RPC是解决分布式的问题,传输方面,什么都可以传输,RPC可能好一点)
- 你用zk做注册中心的目的是什么?
- 你的服务注册和服务发现的表示是什么?你怎么看待他们,为什么要有他们。(回答了分布式)
- 负载均衡算法,你默认的是什么。
- 比如说轮询算法你是怎么做的?
- 如果有一台单点故障了,你轮询的时候怎么屏蔽?你怎么把故障服务器从列表淘汰掉?
- 轮询跳过故障机器,恢复了它怎么办?跳过不是一个好方法?我想说服务降级。面试官说这方面交给zk去处理。
- MQ你用了kafka,你kafka怎么样才能不丢消息。(回答可靠性是依靠冗余机制和ack机制,但是面试官说这种问题可以背的没啥意思,就不问了)
- 你的消息推送平台的作用是什么?
- 你说说你的这几个技术栈,mysql、redis、kafka除了简历上写的,你还拿他们做了什么?
- 聊聊你的redis去重,为什么要去重?方式是什么?
- 一致性哈希出现碰撞怎么解决的?
- 如果出现了哈希碰撞,怎么处理的?
- 你说参考hashmap,他是怎么处理哈希碰撞的?(我说扩容机制应该不是解决减少哈希碰撞的问题吧)如果碰撞了会怎么样呢?
- 问一个实际的问题,你用了这么多技术,是在什么环境部署的,是怎么部署的。比如说你部署kafka的过程是怎么样的?你怎么解压、调参、怎么跟你的springboot项目做结合?你怎么真正地去部署这个项目,比如说你有个应用基于springboot开发,kafka是有服务端和客户端的,kafka服务端你是怎么部署的?怎么把你的业务项目和kafka怎么集成的?
- mysql你有没有分库分表的操作?
- 你的消息发送了,为什么还要存储到mysql呢?
- 你的消息发送链路是什么维度去记录的,用户维度还是操作维度?
- 如果以后你mysql的消息发送链路要分表,你以什么维度去分呢?
算法
1. 写三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请
你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组
输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]]
先说思路,再写代码。
几个月没写算法了,我说回溯,面试官说不对,用双指针。于是我敲出来了,但是我细节写错了。
2. 说归并排序的思路
聊天
- 面试官叫我准备一下一些经典的面试题。
- 下周有结果通知。
- DDD的逻辑很复杂,实际的业务是很难维护的,加入你是领域专家,但是很多人都不是,所以难点在于落地。实际上不会完全按照DDD,实际都是根据实际场景去评估,最多只是按照DDD的理念去推广。大规模真正落地的不对。对于中台配合、微服务落地是有很好的指导意义的。
- 我的项目太小了,我接触的业务理解太少了,谈不到DDD。越简单的东西是越好的,越复杂的东西是越高。架构在于取舍。
- DDD由公司在持续落地,而且怎么评价它做得好也是很难定义的。
- 对我的评价是整体还好,多看看基础算法题。
- 今年校招竞争还是很激烈。
- 北京顺丰这边的hc还充足吗?面试官说好像还可以,也不是很清楚。
三面
时间
2022/11/16
内容
- 前面几轮面试中,面试官问你的一些问题,你有没有印象比较深刻的?
- 抛开RPC不谈,你去怎么理解降级这个事情的?
- 你对降级的了解有什么补充吗?给异常情况做else分支,做这个事情其实在不同场景有不同的解决方案,你了解到的哪类场景可以用哪类方案去做降级这个事?你只说你了解的就好了或者。
- 你对前几轮的面试体验和面试流程,有没有什么建议?
- 你的实习经历,对你除了技术成长之外的其他帮助是什么?
- 你实习过,也见过团队的大概样子,你对第一份工作的团队、公司、工作内容等有什么预期呢?
- 如果摆在你面前由三个offer,也就是三个团队,你怎么判断哪个团队最符合你对上一个问题的答案?
- 你觉得顺丰同城是满足你一个问题的答案的吗?
- 你觉得什么样的领导是好领导?什么样的行为才算是PUA行为。
- 如果你未来的leader还是能做到你刚刚说的那些特点,那你就会认为他就是一个好的leader?
- 假设你的心理承受能力很强了,未来的团队工作中,你预期什么样的事情可能给你带来压力?
- 具体点吧,摆在你面前有三件事情,一是你的leader给了你一个你完全不知道怎么做的事情,但是你不得不做;二是你的leader近一年内不完全信任你;三是你身边有一个同事,你们互相不喜欢,但是你不得不跟他协作。这三个事情哪个让你压力最大?
- 你毕业后一年了,你希望你达到一个什么状态?
- java的泛型你了解吗?它有什么用?你在工程中有什么使用场景?
- 其他语言的泛型特性你有了解吗?
- 有人说java的泛型是一个假泛型,你听过吗?
反问
- 面试官是什么级别的人物:一部分顺丰同城的研发中心的(技术+团队管理)工作,成都和北京都有负责
- 入职的是您的团队吗?不是因为面试官是base成都
- 成都和北京还有hc吗?说既然在面试,那还是有的
- 成都和北京在技术和业务方面有什么区别吗?只是base地方不同而已,都是服务于一个统一的大盘业务。
结果
打电话问hr,挂了。
反正网上一堆大佬进了池子,听说也没hc了,哈哈哈,算是体验过中大厂的完整面试流程吧,知足了。
#面经##顺丰同城#