孙玄:年薪75万的真实技术面试实践攻略(篇章一)

文章目录

  • 1、专业能力
    • 1.1 技术深度
    • 1.2 技术广度

孙玄:毕业于浙江大学,现任转转公司首席架构师,技术委员会主席,大中后台技术负责人(交易平台、基础服务、智能客服、基础架构、智能运维、数据库、安全、IT 等方向);前58集团技术委员会主席,高级系统架构师;前百度资深研发工程师;


【架构之美】微信公众号作者;擅长系统架构设计,大数据,运维、机器学习等技术领域;代表公司多次在业界顶级技术大会 CIO 峰会、Artificial、Intelligence、Conference、A2M、QCon、ArchSummit、SACC、SDCC、CCTC、DTCC、Top100、Strata+、Hadoop World、WOT、GITC、GIAC、TID等发表演讲,并为《程序员》杂志撰稿 2 篇。

互联网的寒冬已经开始了,想必大家已经有了切身的感受,公司内部晋升要求变高、名额变少,外部机会的要求也水涨船高,并且限制涨幅、职级等。

如何在较为恶劣的大环境下,从海量候选人中脱颖而出,获得心怡的工作机会,升职加薪,开启职场新篇章呢?

我们另辟蹊径,思考下,面试官会从哪些方面考察候选人呢?

整体上主要分为:专业能力、解决问题能力、沟通协作能力、成长潜力、文化匹配 这五大方面。

于是我们就有了方向,在面试之前,积极做系统性的准备;面试中,全力展现这些能力;面试后,复盘总结、查缺补漏、继续提高自身能力。

下面结合具体案例分析下这五大方面。

1、专业能力

专业能力主要分为 深度广度 这两块。

1.1 技术深度

无论工作经验多少,学海无涯,知识都是会存在盲区的,但是对于简历里提到的技术点,就需要具备一定的深度了。比如提到了 Redis,不仅要说出来 String、Hash、List、Set、ZSet 这几种数据类型,当你说出了各个类型的应用场景、每种类型内部的数据结构实现、持久化的策略、缓存淘汰的策略、以及与其他存储组件的选型对比时,面试官就会眼前一亮。

当面试官又问到 Redis 做分布式锁的用法,你不仅说出了 SetNX 还有超时自动释放锁的机制,还说出了单机模式下系统可用性的问题,以及集群模式下,Master 宕机后和Slave 数据不一致造成的安全性问题,又提到了 Redlock 算法如何来提高可用性和安全性的时候,你的专业能力深度,就可以给面试官留下一个深刻的印象了。

再举个栗子,有的同学简历里写了 Java 基础扎实,在面试官眼里,那可能就代表着你至少看过并深入理解了比如 String、HashMap、ArrayList、ConcurrentHashMap 等常用类的源码了。

简单总结下,专业能力深度这一块,就是不仅要会用,还要懂原理,看源码,深入到各种细节中去。功夫在平时,要养成习惯,多多积累。

面试过程中,回答问题,要注意体现自己专业能力的深度,需要 主动 展现你对简历提到技术点的深入理解,不要让面试官挤牙膏一样的问。

1.2 技术广度

技术广度主要包括 技术视野思考模式 这两方面。

关于技术视野,举个栗子,比如你项目使用的是微服务架构,面试官大概率会问,你们数据一致性是怎么保障的?

这时就要先体现你的技术深度了,详细说出你们系统在数据一致性方面做的具体工作,比如最大努力通知、兜底补偿之类的方案。

紧接着,面试官又问,还了解其他的数据一致性解决方案吗?如果你能说出强一致性的2PC、3PC、Paxos、Raft、Zab;最终一致性的 Saga、TCC、Seata(AT 和 MT 模式)以及 MQ 事务消息等等,这些解决方案的演进过程,各自优缺点和适用场景 的话,技术视野这块,面试官应该会给个高分了。

再举个栗子,面试官问到了 MySQL 的 Update 操作执行过程,你提到了 WAL 技术,先写 Redolog,防止机器 Crash 造成数据丢失,也能提高性能,通过配置还可以减少磁盘IO 的次数;紧接着又补充到,Kafka、RocketMQ 等消息中间件以及 Elasticsearch、HBase、Leveldb、Rocksdb、TiDB、Tair 等高性能存储组件都用到了这种技术,这同样也可以体现你的技术视野。

面试的岗位级别越高,对广度的要求也就越高,上文我举了一个分布式事务解决方案的例子,作为一个资深技术人员,主流的解决方案是应该了解的,可以体现我们的技术视野,因为较高级的岗位需要经常做一些方案设计和选型的,甚至需要做一些架构设计,如果没有足够的视野,需要长期支撑业务迭代的技术架构,企业不敢让你搞;扛着整个部门季度KPI的业务大需求,也不敢让你来做方案设计。

大家可以想想自己项目中有哪些技术点,可以体现自己的技术视野呢?

下面再来介绍下,同样可以体现技术广度的,思考模式这块。美团的同学可能听过,BeafQPS 方法论,具体如下。

BenchMark(对标),做方案搞架构,要了解部门、公司内、业内的通用和先进解决方案,进行对标。

Efficiency(效率),方案设计要高内聚、低耦合,易扩展,易维护;重复的工作自动化等等,要经常思考如何提高效率。

Architecture(架构),要符合简单、合适、可演进的原则,好的架构,可以提高迭代效率,降低研发成本,提高系统稳定性。

Function(功能),这个是 beafqps 7要素中最基础的一个,勿忘初心,要实现功能。

Quality(质量),一方面是指可靠性,系统要可测试、质量保障要做好;另一方面是指可用性,要高可用,稳定性要好,需要采取熔断降级、限流、 耗时重试、兜底补偿、立体化监控等措施。

Performance(性能),高并发、低延迟,需要采用无状态、串行改并行、同步改异步、读写分离、分库分表、慢查询优化、JVM优化等措施。

Safety(安全),权限要做好控制、鉴权和越权治理,另外还要防范SQL注入、XSS攻击、CSRF等等。

如果在与面试官的交流中,上面7个要素,你都提到了,绝对是可以说明你的思考已经比较全面了,具备了较好的技术广度了,如果面试官对你的技术深度,也是有较高评价的话,专业能力这一块,就过关了。

预知其余面试要素剖析,请听下回分解!

关注【架构之美】,与孙玄老师探讨更多深层次架构知识

孙玄:年薪75万的真实技术面试实践攻略(篇章一)_第1张图片

你可能感兴趣的:(技术杂谈)