华为3次面试可谓是面面俱到啊,侥幸收到offer

前言

秋招一路走来,面的磕磕绊绊,现在比较麻木,不满意但也知道自己几斤几两,无悲无喜状态,只能先毕业再徐徐图之吧。先谈谈过程,再写面经,只为记录,如果能有人看到题目复习一下也不错。

背景:本科物理,硕士计算机偏理论,几乎完全没有开发基础。3月底突然看到春招的信息,慌了,既不会算法也不会开发怎么办?天天睡不着,考虑算法已经比较难了,立马0基础自学后端开发(没想到后端也开始卷了,对我这个菜鸡不甚友好)。

另外我这里为大家准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中),希望大家都能找到心仪的工作!

一面

  • 自我介绍
  • Java是解释性语言还是编译性的?

我上来就说错成编译性的了,还说JavaScript是解释性,没想到错了。还强行解释Java需要编译后转为字节码加载进JVM,大家可以再看看解释性和编译性的区别。

  • 对我的专业表示质疑,觉得我是机电院为什么做软件?

我说我们课题组的方向其实主要还是和计算机相关的(离散事件系统petri网),在其他学校其实都是在计算机院

  • 那相关操作系统、网络的知识你知道哪些?(我说具体一点,我可以说一下,内存管理的知识)

首先说明了为什么会有虚拟内存,CPU中的虚拟地址到物理地址转换的访问模块MMU,另外是进程缺页之后的页面置换算法,最久未使用(LRU),最近未使用(NRU)、先进先出(FIFO)、第二次机会法(FIFO改进)、时钟法(第二次机会改进)

  • 手撕代码:Leecode15、三数之和(这题非常幸运正好在我的难题集上,有兴趣可以看看我总结的几道题,可查漏补缺,)

写完不算完,因为要求O(n2),他质疑我的内层循环超过了O(n)复杂度,我解释了半天,最后用最坏情况说服了面试官。

  • 手撕代码衍生题1:因为我在代码中的循环就已经有去重,他说那如果没有这些操作,直接将重复的也放进List<List>中,怎么直接通过List去重?

我说我可以将每个List转化为字符串,然后放入HashSet中去重(显然这不是他想要的最优解)

  • 手撕代码衍生题2:如果直接放入Set<List>能不能直接去重?

我说不行,因为这样存入的是地址,即使List内容一样地址不同哈希值也是不同的,因为默认的哈希值是通过地址计算的。
不过最后在面试官的引导下,说出了他想要的通过重写hashCode还要重写equals方法(这里我说错为hash函数)。

  • 你的项目是通过Docker部署的,那Dokerfile中ENTRYPOINT 指令的作用是什么?

我说这个我部署没遇到过,不太会

  • 那你有熟悉的Shell指令吗说几个

我就说了常用的top、netstat、vim、chomd等。

  • 有了解哪些云计算相关的知识

简单说了下IaaS、SaaS、PaaS,其他也不太会

  • 最后点评:说作为非科班语言学的还不错,但是操作系统这块还是差太多要补

二面

  • 自我介绍完直接撕代码:Leecode300:最长上升子序列,复杂度O(n2)

这道题我是用双指针,更新temp值,记录全局最长序列长度的方式做的,其实和dp数组的动态规划差不多。
不过写完我基本和他讨论如何降低复杂度,但是我还是不知道怎么搞。他说没事已经达到要求了,不过应该是可以通过(二分查找降低复杂度到O(nlogn),感兴趣的同学可以研究下)

  • 说一下进程和线程的区别,进程和线程之间都是怎么通信的?

我说了下进程是资源分配基本单位、线程是CPU调度的基本单位。进程是分时片执行的,线程在多核情况下能并行执行,单核情况下只能通过切换达到伪并行。进程是通过管道通信,线程可以通过共享内存进行通信。

  • 说一下OSI模型分层和TCP三次握手的过程及原因

这个我和大家一样就不多说了

  • 类加载和双亲委派
  • 本来是要结束的,我觉得这么短,我求生欲满满的说我以为还能讲下我主要的项目, 面试官竟然直接同意让我讲,从项目背景,和我主要工作大概又进行了20多分钟,非常感谢这位面试官能耐心听我讲完。

三面

  • 自我介绍(非常巧这次的面试官也是西电的)
  • 同样是质疑说是原来是机电院,我又解释一通?
  • 让我介绍了下商城后台管理项目?
  • 为什么选择这个项目、这个是和课题组有关还是自学?

我说这个是为我系统学习Java做的学习项目,选择它主要是因为它虽然简单但是涵盖的知识量比较全面

  • 这个项目最一开始你主要考虑的什么?

这个回答是意料之外的,我以为是在问高并发啥的,我最后还是拐回到我还是主要是考虑如何把它搭建起来,通过视频书慢慢将系统搭建起来。

  • 你觉得从项目中获得了什么?

我说提升我对开发的理解,从项目系统化的理解到各个模块间的解耦都有提升。另外了解到注释和文档对代码的重要性,这些资料对你后续复盘再看项目有很大的帮助。

  • 那你说说你的第一个项目(这个是我的主要工作,本来面试官是不感兴趣的,最后具体因为什么聊到我就忘了)

我就和他聊了下项目背景啊开始时间等等,大概持续十分钟

  • 最后他想问有没有团队合作的项目?

因为我研究生的项目要不单干、要不基本继承师兄,很少合作,不过我也说了项目进行中老师同学对我开展工作的帮助。
最后我就说电子设计竞赛是三人的,我把我们的比赛过程中的坎坷经历给他说了,他听着感觉像在听故事。

  • 怎么评价华为?

我说了危机意识、狼性文化和开放多元,加了自己之前看的例子和理解。

  • 有什么想问我的?

我问了下这里的新人是怎么培养的
最后令人受宠若惊的是面试官起身主动握了我的手说谢谢,我也连忙回应非常感谢您,很高兴能聊这么久()

总结

最后我为大家准备了ava核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值