华为面经(回馈牛客)

一面

1、自我介绍

2、Java是解释性语言还是编译性的?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二面

1、自我介绍完直接撕代码:Leecode300:最长上升子序列,复杂度O(n^2^)

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

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

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

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

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

4、类加载和双亲委派

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

三面

1、自我介绍(非常巧这次的面试官也是西电的)

2、同样是质疑说是原来是机电院,我又解释一通?

3、让我介绍了下商城后台管理项目?

4、为什么选择这个项目、这个是和课题组有关还是自学?

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

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

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

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

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

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

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

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

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

9、怎么评价华为?

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

10、有什么想问我的?

  • 我问了下这里的新人是怎么培养的

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

#面经##华为##Java工程师##校招#
全部评论
云计算开发岗嘛?怎么还问到云计算了
1 回复 分享
发布于 2020-09-05 17:15
可是事实是可以去重呀?我刚试了下
点赞 回复 分享
发布于 2020-09-05 20:40
请问你是线下面试的嘛
点赞 回复 分享
发布于 2020-09-05 17:19
棒棒!
点赞 回复 分享
发布于 2020-09-05 15:51
楼主投的哪个部门呀
点赞 回复 分享
发布于 2020-09-05 13:58
校招
点赞 回复 分享
发布于 2020-09-05 12:23
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2020-09-05 12:12

相关推荐

05-23 17:41
已编辑
西南交通大学 Java
面得最久的一次,一共一个半小时,java基础,jvm,集合,spring,mybatis,数据库,Linux,计网都有涉及下面是手撕题一开始是这道题/*重构字符串给定一个字符串&nbsp;s&nbsp;,检查是否能重新排布其中的字母,使得两相邻的字符不同。返回&nbsp;s&nbsp;的任意可能的重新排列。若不可行,返回空字符串&nbsp;&quot;&quot;&nbsp;。示例&nbsp;1:输入:&nbsp;s&nbsp;=&nbsp;&quot;aab&quot;输出:&nbsp;&quot;aba&quot;示例&nbsp;2:输入:&nbsp;s&nbsp;=&nbsp;&quot;aaab&quot;输出:&nbsp;&quot;&quot; 提示:1&nbsp;&lt;=&nbsp;s.length&nbsp;&lt;=&nbsp;500s&nbsp;只包含小写字母*/感觉短时间内写不出来,然后问面试官能不能换题,面试官换了一题之后才写出来的下面是换过的题/*公共字符按ASCII码升序输出所有符合要求的字符;&nbsp;如果没有符合要求的字符,则输出空列表[]。样例1输入:2&nbsp;[&quot;aabbccFFFFx2x2&quot;,&nbsp;&quot;aaccddFFFFx2x2&quot;,&nbsp;&quot;aabcdFFFFx2x2&quot;]输出:[&quot;2&quot;,&nbsp;&quot;F&quot;,&nbsp;&quot;a&quot;,&nbsp;&quot;x&quot;]解释:字符&nbsp;a&nbsp;在三个字符串中都出现&nbsp;2次,符合要求;字符&nbsp;b&nbsp;在第二三个字符串中分别出现&nbsp;0次、1次,不符合要求;字符&nbsp;c&nbsp;在第三个字符串中出现&nbsp;1次,不符合要求;字符&nbsp;d&nbsp;在第三个字符串中出现&nbsp;1次,不符合要求;字符&nbsp;F&nbsp;在三个字符串中都出现了&nbsp;4&nbsp;次,符合要求;字符&nbsp;x&nbsp;在三个字符串中都出现了&nbsp;2&nbsp;次,符合要求;字符&nbsp;2&nbsp;在三个字符串中都出现了&nbsp;2&nbsp;次,符合要求;因此字符&nbsp;a、F、x、2符合要求,按ASCII码升序输出&nbsp;*/代码实现public&nbsp;class&nbsp;Test&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;char[]&nbsp;commonChars(int&nbsp;count,&nbsp;List&lt;String&gt;&nbsp;strings)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int[][]&nbsp;counts&nbsp;=&nbsp;new&nbsp;int[strings.size()][128];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//记录每个字符出现的次数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;strings.size();&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;tmp&nbsp;=&nbsp;strings.get(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;charArray&nbsp;=&nbsp;tmp.toCharArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//记录当前字符串所有字符出现的次数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;charArray.length;&nbsp;j++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counts[i][charArray[j]]++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义变量记录符合条件的字符个数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;resCount&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Character&gt;&nbsp;res&nbsp;=&nbsp;new&nbsp;ArrayList&lt;&gt;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;128;&nbsp;j++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断当前字符是否符合次数要求&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;state&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;strings.size();i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(counts[i][j]&nbsp;&lt;&nbsp;count)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;=&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(state)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resCount++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.add((char)(j));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;resArr&nbsp;=&nbsp;new&nbsp;char[resCount];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;resCount;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resArr[i]&nbsp;=&nbsp;res.get(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;resArr;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;k&nbsp;=&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;String&gt;&nbsp;strings&nbsp;=&nbsp;new&nbsp;ArrayList&lt;&gt;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strings.add(&quot;aabbccFFFFx2x2&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strings.add(&quot;aaccddFFFFx2x2&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strings.add(&quot;aabcdFFFFx2x2&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;res&nbsp;=&nbsp;commonChars(k,&nbsp;strings);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(res);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(char&nbsp;c:res)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(c&nbsp;+&nbsp;&quot;&nbsp;&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}}
华为一面188人在聊 查看2道真题和解析
点赞 评论 收藏
分享
评论
5
64
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务