需要首先说明的是,技术面试可能是电话面试也可能是现场面试,这取决于你和面试官是否在同一个城市。如果是电话面试,一定要在通话质量非常好的情况下进行面试,否则要和面试官改约时间。如果是现场面试,最好带上纸和笔,提前画一下自己做的系统架构,这样能更直观地表达自己做的事情。
技术面试主要包括以下四个方面:
1. 自我介绍
大多数面试官一般都会让应聘者首先做个自我介绍,自我介绍回合是应聘者最主动的一个回合,因为在这个回合主要是应聘者说面试官听,所以我认为这个回合非常重要,如果介绍得非常好,不仅可以让面试官对你有好感,还可以为后面面试官提问埋伏笔。那么,什么叫为提问埋伏笔?就是在自我介绍里强调你擅长的技术点,引导面试官考察你最擅长的技术点。对于面试官而言,还可以通过自我介绍考察你的沟通能力,你是否能用言简意赅的表达方式描述清楚自己做过的事情。
2. 介绍做过的产品
介绍产品时面试官会考察应聘者的主动性和系统化思考能力。很多人都是做产品的一个功能或一个模块,但是在这个环节你需要把整个产品搞清楚并能够讲清楚这个产品是什么,为什么做这个产品,这个产品有哪些功能,做这个产品时的技术挑战有哪些,以及你是如何解决这些挑战的。比如,“我现在在公司主要负责做小微融资,小微融资主要为经营者提供融资服务,面临的挑战是场景多、用户广、用户个性化诉求多,我的解决方案是系统实现可配置化和平台化。可配置化是指通过配置对外提供服务,而不是通过编码;而平台化会引入第三方机构帮忙一起解决用户的诉求。”
3. 回答技术问题
回答面试官的问题要做到一听、二问、三思、四答。
举个例子,有个面试官问了一个JVM问题,怎么判断FULL GC是否正常?首先思考下何为不正常,第一个点GC是用于回收内存的,第二个点GC不能干扰应用程序。所以从这两点出发,那么可以得出结论,频繁的FULL GC 但是内存又没有回收回来,内存曲线成稳定上升趋势,很可能是内存泄漏了,这样的GC是不正常;因为FULL GC导致应用响应延时或卡顿,甚至OOM也是不正常的。
4. 如何回答开放性问题
面试官可能会问一些开放性的问题来看看应聘者的思维能力,比如如何建设高可用系统?那么面对这类问题有哪些比较常用的应对套路呢?因为开放性问题是没有标准答案的,所以你需要尽可能地回答这个问题,也可以在回答的过程中和面试官一起探讨,想到多少说多少。因此,你可以这么回答“高可用系统”这个问题:高可用系统架构有十几种设计原则,涉及到的点非常多,比如减少单点、减少依赖、应用做到无状态、隔离性、接口限流等。然后你再展开进行描述,减少单点需要减少全链路上的单点,比如应用服务器、网络设备、数据库和机房等资源的单点;减少依赖,如果A依赖B,B依赖C,因为有了中间者出问题的概率就会增加,所以高可用中A最好直接依赖B,甚至不要依赖B,直接依赖缓存或者数据库;接口限流,系统每个接口能承担的最大流量是有限的,平时我们系统不会出问题,如果某个接口的流量突然猛增十倍,很有可能直接打垮系统,所以每个接口都可以通过压测测试下,评估下这个接口能够承担的最大QPS或TPS是多少,系统需要承受峰值流量,如果不能承受峰值流量就需要进行扩容。
HR面试HR面试主要考察一个人的价值观和潜力。回答这些问题最重要的一点是诚信,应实事求是地说,如果编故事资深的HR能看出来,就算看不出来公司后续也会做背景调查。进入这一关请想清楚几个问题:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |