第一轮是电话面试,主要是对我过往项目经验的了解,比如我在某项目中如何实现了一个复杂的缓存管理系统,面试官详细问了我在其中遇到的挑战和解决方案。第二轮是技术面试,我在现场做了一个编码测试,要求在一小时内实现一个多线程的任务调度器。我解释了如何使用 ThreadPoolExecutor 来优化多线程处理,并成功通过了测试。
面试官问的面试题: 你在项目中使用过哪些缓存策略?如何选择适合的缓存机制?
你在多线程编程中如何避免死锁和竞态条件?
请描述一下你在某个项目中遇到的最大的技术挑战,以及你是如何解决的。
如果项目进度落后于预期,你会如何调整开发计划?
你如何与非技术部门的同事沟通技术细节,以确保项目顺利进行?
这一次面试中,一面、二面为专业面试,三面为业务主管面试;3场面试均为线上视频面试,面试官都非常和蔼。海思的面试整体开始得都相对比较晚,所以一开始还以为是笔试成绩太差导致已经凉了;一直到11月底,才开始进行面试流程。总的来看,华为的面试对于技术方面的考察其实并不是很多,至少没有我原本预计的多——算法题目倒是2轮专业面试都涉及了,但是每次也都只有1个题目,而且题目的难度也不高,主管面就完全没有算法方面的考察;计算机八股题目也是相对很少,其中一面的面试官应该是技术栈不在C++方向,所以就没有问太多的八股,二面面试官倒是问了一些八股,但是也都是比较基本的内容,主管面依然没有问八股方面的内容。但是,对于实习经历与项目经历,3场面试都是尤为重视的,几乎全部的问题都是由实习与项目经历来入手提问的。整体感觉,虽然面试的方向是软件开发的岗位,但是和其他互联网公司的面试比起来,华为的面试还是和国企、银行等单位的技术岗面试比较类似,更偏向于实习与项目经历、个人综合能力与素质等方面的考察。
面试官问的面试题: 对照着简历,再简单介绍一下自己总体的实习、项目、科研经历。研究生是保研的吗?本科和研究生所学的专业是否属于比较专业性强、小众的专业?简历中的项目都是本科、研究生阶段的吗?个人对于未来工作安排、岗位方向有何想法?为什么有转码的想法?自己希望工作晋升的路径如何?自己对于Groovy语言的接触如何?都用这一语言做了哪些工作?在哪些场景下需要用到这一语言?国家级奖项主要都是在本科阶段获得的,研究生阶段奖项情况如何?研究生阶段参与过哪些项目?这些项目的级别如何?是否有过研究生阶段的国家级奖项?