一、前言
上一篇离职贴发布之后仿佛登上了热门,就连曾经阿里的师兄都看到了我的分享,这波流量真是受宠若惊!
回到正题,文章火之后,一些同学急切想要让我分享一下面试内容,回忆了几个晚上顺便总结一下,专家岗位面试主要对项目、技术和算法三个方面进行考查,有问题可以留言讨论。
二、项目篇
项目上要从工作经历中挑有技术或业务难度的项目,这样才能吸引面试官,相应地面试官会适当做些技术或业务上的扩展来进一步考查深度,不要给自己挖坑就行。最好的办法自己尽量要先从项目上挖掘一些延伸可能点,提前做好调研,面试过程中才不至于陷入尴尬的局面。
1)营销平台建设
营销架构分层都有什么?核心领域模型是什么?
每满减、阶梯满减怎么支持?
互动任务的类型有哪些?周期性任务怎么设计 ?
营销稳定性都做过哪些事情?
营销计算时比较耗费cpu,怎么解决?
2)跨境供货平台
业务链路是什么?核心领域模型是什么?系统难点在哪里?怎么解决?
RBAC与 ABAC 区别?数据权限怎么设计?
DDD 思想,聚合、实体、值对象的概念?怎么识别出领域模型?DDD六边形架构解决什么问题?DDD战略设计核心点?
三、技术篇
技术上八股文考查的非常少,主要是偏并发类的场景题:
怎么在最快时间内发送大量消息?
qps 100,数据库只有3qps,怎么保证用户侧无感访问同一个热点key?
数据库:explain 索引类型优先级、range类型的优化、深分页的优化方式
缓存类:redis读取key超时解决方案
设计类似于 diamond(配置中心)的系统
并发类:线程池原理,以及曾经遇到的坑有哪些?
微信摇一摇功能的实现,要求以最快速度匹配时间接近的人?
分布式锁实现的方式有几种?可能会出现什么问题?
两地三中心,数据怎么同步?(订阅binlog+kafka,同时要解决数据回环问题)
有没有遇到过服务挂了,但 cpu 和内存都正常的场景,假如没有遇到,可能的原因有哪些?(比如I/O瓶颈、业务线程池满、GC都可能)
四、算法篇
针对后端开发岗位,算法题难易程度普遍是:简单、中等,建议 leetcode Top150热题中等偏下即可,不要纠结于 hard 等级的题目,也没有必要。
两数之和等于target,并返回满足条件两个数的索引
单例线程安全一种写法
场景算法开放题:对已存在的文件目录,请实现一个往指定文件中追加内容的算法。
核心思路使用树结构来存储,然后使用深搜的方法找到追加文件,最后将内容追加进去。
/** * targetFile:目标文件,如/a/b/c.txt **/ public void appendContext(String targetFile, String context) { //...... }