技术面试 需要首先说明的是,技术面试可能是电话面试也可能是现场面试,这取决于你和面试官是否在同一个城市。如果是电话面试,一定要在通话质量非常好的情况下进行面试,否则要和面试官改约时间。如果是现场面试,最好带上纸和笔,提前画一下自己做的系统架构,这样能更直观地表达自己做的事情。 技术面试主要包括以下四个方面: 1. 自我介绍 大多数面试官一般都会让应聘者首先做个自我介绍,自我介绍回合是应聘者最主动的一个回合,因为在这个回合主要是应聘者说面试官听,所以我认为这个回合非常重要,如果介绍得非常好,不仅可以让面试官对你有好感,还可以为后面面试官提问埋伏笔。那么,什么叫为提问埋伏笔?就是在自我介绍里强调你擅长的技术点,引导面试官考察你最擅长的技术点。对于面试官而言,还可以通过自我介绍考察你的沟通能力,你是否能用言简意赅的表达方式描述清楚自己做过的事情。 2. 介绍做过的产品 介绍产品时面试官会考察应聘者的主动性和系统化思考能力。很多人都是做产品的一个功能或一个模块,但是在这个环节你需要把整个产品搞清楚并能够讲清楚这个产品是什么,为什么做这个产品,这个产品有哪些功能,做这个产品时的技术挑战有哪些,以及你是如何解决这些挑战的。比如,“我现在在公司主要负责做小微融资,小微融资主要为经营者提供融资服务,面临的挑战是场景多、用户广、用户个性化诉求多,我的解决方案是系统实现可配置化和平台化。可配置化是指通过配置对外提供服务,而不是通过编码;而平台化会引入第三方机构帮忙一起解决用户的诉求。” 3. 回答技术问题 回答面试官的问题要做到一听、二问、三思、四答。 - 一听,指要听清楚问题。会听也是沟通能力的一种,不仅要听清楚问题,还要学会边听边猜,判断面试官考察的点。
- 二问,指通过询问确认问题。有些问题可能面试官问的比较抽象,你需要把这个问题聚焦,并向面试官确认“你问的是XXX这个问题吗?”
- 三思,指思考问题。确认问题后,应先在脑海里思考下这个问题,最好不要拿到问题就开始讲答案,很多应聘者说了半天,但是都没说到点子上,或者说了十几句,只有一句说到了点子上,浪费了彼此大量的时间。如果面试官问了某个技术点你不知道,一定要快速回答说这个问题你不清楚,以便于面试官继续提新的问题,但是要把这个问题记下来,因为也可能后续面试还会问。我就喜欢问应聘者在之前面试中没回答上来的问题,看看候选人是否有技术热情和快速学习的能力。
- 四答,指最后清楚地回答问题。回答的时候要表达清楚,注意语速和音量,要让面试官听清楚你的答案。如果是当面面试,还可以配合一些手势,这样可以加深面试官对答案的印象。如果有黑板,也可以在黑板上画一下架构图,便于面试官理解。
举个例子,有个面试官问了一个JVM问题,怎么判断FULL GC是否正常?首先思考下何为不正常,第一个点GC是用于回收内存的,第二个点GC不能干扰应用程序。所以从这两点出发,那么可以得出结论,频繁的FULL GC 但是内存又没有回收回来,内存曲线成稳定上升趋势,很可能是内存泄漏了,这样的GC是不正常;因为FULL GC导致应用响应延时或卡顿,甚至OOM也是不正常的。 4. 如何回答开放性问题 面试官可能会问一些开放性的问题来看看应聘者的思维能力,比如如何建设高可用系统?那么面对这类问题有哪些比较常用的应对套路呢?因为开放性问题是没有标准答案的,所以你需要尽可能地回答这个问题,也可以在回答的过程中和面试官一起探讨,想到多少说多少。因此,你可以这么回答“高可用系统”这个问题:高可用系统架构有十几种设计原则,涉及到的点非常多,比如减少单点、减少依赖、应用做到无状态、隔离性、接口限流等。然后你再展开进行描述,减少单点需要减少全链路上的单点,比如应用服务器、网络设备、数据库和机房等资源的单点;减少依赖,如果A依赖B,B依赖C,因为有了中间者出问题的概率就会增加,所以高可用中A最好直接依赖B,甚至不要依赖B,直接依赖缓存或者数据库;接口限流,系统每个接口能承担的最大流量是有限的,平时我们系统不会出问题,如果某个接口的流量突然猛增十倍,很有可能直接打垮系统,所以每个接口都可以通过压测测试下,评估下这个接口能够承担的最大QPS或TPS是多少,系统需要承受峰值流量,如果不能承受峰值流量就需要进行扩容。 HR面试HR面试主要考察一个人的价值观和潜力。回答这些问题最重要的一点是诚信,应实事求是地说,如果编故事资深的HR能看出来,就算看不出来公司后续也会做背景调查。进入这一关请想清楚几个问题: - 你为什么想加入这家公司?这家公司有哪些点吸引你?有哪些愿望是能在这家公司实现的?比如可以回答说想做业界领先的中间件,做一款亿级用户使用的产品等。回答这个问题一定要实事求是,不要编,诚信很重要。不建议回答因为薪水跳槽,因为薪水跳槽我觉得是自己没想清楚,假如另外一家公司的工资再多给你几千块钱你会去吗?
- 你为什么离开上一家公司?可以从上进的角度来回答这个问题,比如说在上家公司太安逸了,还是希望做一些更有挑战的事情,趁年轻多拼搏。
- 你为什么会频繁跳槽?一年一次的跳槽我认为就是频繁跳槽,频繁跳槽其实是对自己职业生涯没有想清楚,也是一种不成熟的表现,所以应首先承认自己频繁跳槽是不对的,是过去没想清楚自己的职业规划,后面打算在一家公司好好干下去,逐渐提升自己的能力和职位。
- 你的职业规划是什么?职业规划主要是看自己后续往哪个方向发展,并且想做到什么程度,通过什么样的学习计划逐渐完成职业规划。比如,你可以这样回答,“我是一位偏向应用的开发,对金融业务很感兴趣,后续希望技术能力首先达到一定程度,并在金融领域能成长为一名优秀的业务架构师,或金融领域的技术专家,最近在看领域模型相关的书。”
- 当你遇到瓶颈的时候你怎么办?你可以这样回答,“首先我会进行一场深刻的反思,并找些书来看看,从书中找答案,同时也会找更优秀的同事或老板沟通下,看看他们是如何提升自己克服瓶颈的。”
- 这些年你每年的成长是什么?怎么能体现你的进步?那么如何体现进步呢?你以前需要依靠同事才能解决问题,现在可以独立负责一个系统。以前写代码比较草率,现在非常认真,写完代码之后会反复看几遍,并完善单元测试,保证代码高质量上线。以前做事情是想到哪儿做到哪儿,现在是先想清楚这件事情分哪几个步骤,然后再去做。以前是一个人独立完成任务,现在能带团队完成更大的任务。以前不够主动,每次都是等活干,现在是自己规划事情主动完成。以上说到的这些点都是进步的体现。
- 当你和同事之间产生分歧时你会怎么办?和同事共事,要做到引导而不是指导,引导同事说出他自己的看法,比如有个点他没有考虑到,可以通过反问的方式询问如果遇到这种情况他会如何解决。
|