乐趣区

关于后端:互联网大厂面试要求技术广度技术深度系统设计以及项目经验

技术广度,为什么要这么考查一个人的技术广度?

假如,当初咱们公司,咱们团队负责一个零碎,Dubbo / Spring Cloud 作为服务框架,MQ(RocketMQ / Kafka),缓存(Redis),搜寻(Elasticsearch)

在互联网行业里 + 非互联网的 IT 公司里,自身是有一套支流技术栈的

假如,业务倒退特地的迅猛,须要团队扩招 5 集体进来,此时就要在里面的招聘网站里公布对应的职位 JD,跟猎头单干,捞一些比拟适合的人的简历进来

最最起码的,你应该去从哪个角度来考查这个获选人呢?职位 JD 要求是工作教训在 3 年~5 年,有肯定的社会工作教训的

(1) 技术广度来考查

招聘过去一个有几年教训的人,就不要再去造就他了,候选人的整个技术栈是比拟匹配咱们团队的技术栈的

从广度上把各种技术都给他考查一下,尤其是咱们团队负责的零碎波及到的技术

Dubbo,相熟吗?看你简历之前你们公司也是用的这个服务框架?说一下他的根本的工作原理,从服务注册到发现,他是怎么来运行的呢?你们过后服务注册核心是用的什么技术跟 Dubbo 搭配起来的?

看你简历上,说你们之前的零碎里用过 RocketMQ,来聊一聊,先说你们公司过后为什么要用 MQ 呢?MQ 是怎么部署的?集群架构?高可用是如何保障的?RocketMQ 的外围架构原理?工作原理?过后有没有思考过发送到 RocketMQ 里的音讯可能会失落?

缓存(Redis),集群部署,Redis 集群运行原理,Reids 高可用的原理,Redis 单线程高并发的原理,ES 分布式架构的原理,个别你们的 ES 是怎么优化性能的

JVM,数据库和并发,都是必考的

咱们心愿你可能进来之后对 JVM 的基本原理都有肯定的理解,而后呢如果你负责的一个零碎呈现了 JVM 的一个问题,比方内存溢出,或者是 GC 频繁的问题,心愿你能独立的去剖析和解决

数据库,MySQL,包含事务的原理、索引的原理、常见的 SQL 优化的伎俩

并发,自身是属于 Java 编程语言层面的一个根本的性能,自身有一些深度和难度的中央,写进去高效率的正确的并发程序

到此为止,确定,他进来的话,立马能够上手相熟你们的架构、零碎和代码,技术上不必做非凡的造就,很快就能够上手开始干活,基于你们现有的架构、现有的技术栈,上手就能够开始开发各种业务功能模块

常见的技术计划也会设计,常见的一些问题能够本人解决,常见的优化能够做

薪资在 20k 左右,差不多

(2) 我的项目教训

你平时用的各种技术在你的我的项目中如何联合业务来进行落地,而后你在我的项目的生产环境中落地一个技术之后,对他进行的生产优化、架构优化、生产实践是怎么来做的

分库分表,你说你简历里用过 Sharding-JDBC 来做分库分表

首先给我说说,你们的零碎有哪些库哪些表,对应的是哪些业务呢?而后通知我,外围的表每天新增的数据量有多少,目前曾经积攒了多少数据了?单表是百万级?还是千万级?你们是什么时候分的表?什么时候分的库?为什么?

在没有分表之前,SQL 的性能大略如何?分表之后 SQL 的性能大略如何?分库之前每个数据库服务器上放多少 GB 的数据?一台服务器能够抗多少数据?分库之后拆分到几台数据库服务器下来?每台服务器当初放多少 GB 的数据?

很多同学进来面试,学习了很多的技术,无论是跟着一些视频课程,在线培训课程,或者是网上的博客,或者是一些书,积攒了很多的常识,Sharding-JDBC 分库分表根本的原理,常见的分库分表的技术计划

然而呢,这些同学往往是为了面试去筹备的一些技术,然而其实从没在本人的我的项目中实际过,也从没思考过这些技术在本人我的项目落地的各种细节应该是如何来进行设计的

进来面试的时候,往往被 面试官一通诘问我的项目的各种细节,而后就间接死了

(3) 生产教训

分布式、微服务这块,你说用过网关,网关调研了哪几种技术?比照一下他们的优缺点?最初你们是怎么进行技术选型的?你们这个零碎每天的访问量多高?高峰期 QPS 多高?你们网关要抗多高的 QPS?网关是如何部署的?部署了几台机器?每台机器的配置如何,几个核 CPU,几个 GB 内存?

比方你的服务里加了一个新的接口,总不能你每次都手动在网关里配置一些新的接口和服务的对应关系,网关的动静路由是怎么做的?每次上线服务或者新的接口,跟你的网关动静路由是如何搭配起来的?

线上网关部署的机器在生产环境,你们的拜访压力下,平时的高峰期的 CPU 负载如何

有没有思考过网关的扩容?如果压力过大如何进行扩容?

有没有测算过网关进行申请路由的性能如何?个别一个申请通过网关层的路由对工夫的开销大略是多少?

当初的话呢,假如说,网关过后在线上部署之后生产环境运行的时候有没有遇到过什么问题?比方并发的问题,性能的问题?如果要对生产环境的网关进行高并发、高性能的优化,你们是怎么做的呢?如果要做,你感觉从哪些角度动手能够去做?

总结一下:我的项目教训 + 生产教训,薪资是 28k,30k,或者是 32k,高级~ 资深的工程师,教训 5 年~8 年左右,心愿你可能去带一两个小弟,或者是带一个小小组,当一个小小的 team leader

我必定是心愿你可能把生产环境的各种细节都 cover 住

我的项目教训,技术在我的项目中如何落地,各种细节,如果你是一个带几个小弟的资深工程师的话,此时你就必须对你负责的这个我的项目进行所有细节的把控,心愿你可能联合业务和我的项目的细节去思考技术如何落地

生产教训,把控我的项目部署后的生产环境里的状况,对各种状况做出对应的动作和优化的伎俩,全面为本人的我的项目来进行负责

如果是很多的大厂,哪怕是三五年教训,或者二三年教训,也会来考查这块我的项目教训和生产教训,越是大厂,对你的能力里要求就越高,心愿你进来当前越能独当一面,所以就心愿你不光只是有技术广度

(4) 技术深度

你有没有读过哪些开源我的项目的源码,RocketMQ,RocketMQ 的源码,Dubbo 的源码,如果你精通一些技术的源码的话,为什么会特地的有价值,有竞争力,让面试官更加的偏向于用你呢?

技术深度决定了你的技术功底,决定了在生产环境随时你的零碎应用的各种技术可能会遇到一些异样或者报错,导致系统挂掉

Dubbo、RocketMQ、Kafka、ES,随时可能有问题,比如说 Dubbo 随时可能会报错,RocketMQ 忽然异样了无奈写入音讯,ES 忽然性能巨慢,一次查问要十几秒的工夫

必须须要那些精通一些技术源码的同学,现场依据异样去剖析技术的源码,从源码级别定位到问题的所在,而后解决问题

大厂,很可能会考查你的技术深度,如果发现你没有什么技术深度,那么可能你就没有太大的竞争劣势

(5) 零碎设计

往简略了说,就是会考查一些问题,比如说让你来设计秒杀零碎,设计一个 12306 火车票购票零碎,撑持几亿用户买火车票,你会如何来设计,让你设计一个微信红包零碎,你会如何来思考

大厂,越是对你的能力要求很高,心愿你进来当前独大是哪个一面,哪怕你就 20k 的薪资,也心愿你是进来独当一面的,独立负责一块货色

独立的设计一块零碎,独立的设计一个小的架构,此时就会要求你有肯定的独立的零碎设计的能力,30k,40k 的薪资才会考查

30k,40k,50k,更高薪资的职位,技术专家,架构师,要求你原本在你们公司就负责了一大块零碎的架构,带了 10 来个小弟,负责了一个大零碎,有丰盛的大型架构设计的教训,架构设计的方方面面,从实践到深度,再到教训,都很丰盛。

本文由 mdnice 多平台公布

退出移动版