24届空挡-Java开发转测试面经-华为od

## 整体流程

 ​ 机试->网上综测->资格面->两次技术面->主管面 

## 各环节经验

#### 机试:

​ 在联系栗栗姐后,根据栗栗姐给的材料刷了刷题库。最后熟悉了一下答题环境,在牛客上刷了几题,和Leetcode的不同之处就是多了个输入的处理和输出的print。 

​ 机试需要用到电脑+手机摄像头,如果是台式记得网购一个,之后几次面试也用得上。机试的软件一开始还给我闪退了一次,说什么环境有问题好像,后面不管他直接重连就解决了。

​ 机试由2道100分题和1道200分题组成,虽然说2道100分题做完才能进入200分题页面,但也可以随时返回100题页面进行修改。我遇到的2道100分题就感觉比较困难,主要是题干难以理解,在前面花了大约两小时,幸好200分题比较简单很快做完,之后又回去对100分题进行修修补补,最后勉强过了150合格线。

​ 建议参加机试时合理分配时间,如果前面遇到的题比较难不妨先看一看后面几题,说不定就比较容易,把难题留到最后,解题时就能减少因为觉得剩余时间不够而影响发挥的情况(这点请根据自己的卷子提示来进行,不知道是否会一直这样子)。 

#### 网上综测:

​ 这部分比较容易,就是做一百多道选择题。

#### 资格面与主管面:

​ 由于换了几个部门,所以我进行了好几次资格面和主管面(技术面过了之后,换部门只需要进行资格面和主管面,不需要重新技术面),按个人经历来看同一个部门的资格面和主管面的风格相近——只有一次资格面问的比较详细,对应主管面问的也比较详细,我只有那一次主管面挂了;剩下几个部门都是资格面和主管面聊聊天就结束了。

​ 一开始对于资格面和主管面没什么准备,那一次主管面挂了后栗栗姐十分贴心地给我进行了相关问题的辅导,同时也分享了常见问题的几个优秀回答来提供参考。我针对一些常见问题也事先做了一些准备,之后的资格面和主管面也更得心应手了。感谢栗栗姐对我的帮助。 

​ 虽然最后一次也是比较偏向聊天的,有些问题的准备没用上,但我还是建议面试前和栗栗姐沟通沟通,对常见问题早做准备(比如目标、自我总结、工作发展、工作规划、工作强度),这样当遇到要求比较严格的部门时也能更加自信。 

​ 一般最后环节就是问你还有没有什么问题想了解,我就会问问部门的业务是干嘛的,然后面试官就会介绍一下相关业务和入职后的工作内容之类的。 

#### 两次技术面: 

​ 我意向岗位是测试岗,但由于测试岗技术面的面试官比较少难预约,所以栗栗姐先给我预约了开发岗技术面的面试官,之后定级不太满意就又进行了测试岗技术面的面试,总计进行了四次技术面。正常流程只需要两次技术面。技术面之前栗栗姐也发了相关资料,比如开发的Java八股、测试八股与常见问题,我准备时主要把这些资料看了看(八股可能有多个版本,选一种看就行了),然后又去网上找了测试的一些基础知识稍微看了看。 

​ 技术面流程为自我介绍+问答+手撕代码。个人感觉手撕代码占比比较高吧,因为感觉回答的也不是很好,但还是通过了。手撕代码就是面试官在视频会议的聊天里把题目文字发出来,你想办法保存一下,打开共享桌面在自己电脑上写,面试官看着你写。面试官也会问你做了哪些项目,用了哪些技术哪些框架什么的,简历里有提到的项目可以提前准备一下。  

​ 我选的是Java,准备时只看了一篇Java八股的基础部分,没去学习Spring框架什么的,后面问起来这块就不会了。平均时间大概40-50分钟吧,第一次技术面问的时间比较短,做题时间长(做了两题);第二次技术面问的时间比较长做题时间比较短(做了一题)。 

(1)第一次开发技术面: 

​ 先是自我介绍,然后根据简历尬聊了一会毕设(因为没有其他项目了,所以我准备了毕设的介绍),然后面试官表示他也听不懂。之后问了下Java基本数据类型有哪些,然后让我八股哪些比较熟就说哪些。原本打算等面试官问我八股我再回答的,不过看起来面试官也没准备什么问题。之后就是手撕代码,做的比较快就让我做了两题,题目如下: 

1、给定一个字符串s,根据字符出现的频率对其进行降序排序。一个字符出现的频率

是它出现在字符串中的次数。。

返回已排序的字符串。如果有多个答案,返回其中任何一个。。

输入:s = "tree"

输出: "eert"/ "eetr"

public String frequencySort (String s) {     

}

输入:s = "cccaaa"

输入:s = "Aabb"

``` 

2、给定一个mxn的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。

请使用原地算法。

示例1:

输入: matrix = [[1,1,1],[1,0,1],[1,1,1]]

输出: [[1,0,1],[0,0,0],[1,0,1]]

class Solution {

public void setZeroes(int[][] matrix) { 

}

}

示例2:

输入: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 

``` 

​ 做第二题时对题目要求的原地算法理解错了,问了面试官但我没听清楚,以为是空间复杂度为O(1),然后卡了几分钟,面试官问我哪有问题,然后再聊才发现本题里没有这个限制。原地算法在这题指的应该是直接修改输入数据(即二维数组matrix),通常情况下对空间复杂度的要求在这题里不考虑。 

​ 所以手撕的时候遇到不理解的地方可以问问面试官。比如第一题里不清楚是否要区分字母大小写,问了面试官得知要区分。结束后面试官好像想对第二题的代码给出一些优化建议,但他网卡了十几分钟,我们就在那尬了十几分钟,然后他说算了算了就这样结束吧。   

(1)第二次开发技术面: 

​ 先是自我介绍,我是计科的,面试官根据简历上写的所学专业课程开始问专业知识。在问数据结构时还结合Java的一些堆栈怎么实现的问了问,到了其他科目就感觉面试官也不太熟相关知识了。经常就是他问一个问题,我回忆了所学知识答了答,然后他说其实我想问的是这个角度的展开,然后我就按着这个角度再答了答。之后也问了有没有Java相关的项目经历以及了不了解Spring之类的框架,但我都不熟也没项目经历。整体上没怎么问八股的内容。手撕代码题目如下: 

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。     

示例 1: 

输入:nums1 = [1,2,2,1], nums2 = [2,2]

输出:[2,2]

示例 2: 

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]

输出:[4,9] 

提示: 

1 <= nums1.length, nums2.length <= 1000

0 <= nums1[i], nums2[i] <= 1000

``` 

​ 我一开始直接在main方法里实现了要求的功能,然后面试官让我构造个新的方法实现,于是改了改把大部分代码放在新方法里,main函数调用这个方法。之后面试官又让我不要在方法里直接print,于是又改在main里print然后修改了方法的返回值。最后让我换几个输入测一测,都没问题就结束了面试。      

​ 准备时看了栗栗姐发的资料又找了一些测试基础知识看了看,个人感觉对常见问题知道怎么回答就行了。平均时间大概10-20分钟吧,相比于开发岗技术面感觉更快一些,可能是因为我遇到的两个面试官问答环节问的都不是很多。   

(1)第一次测试技术面: 

​ 先是自我介绍,然后问了问对测试的理解、测试与开发关系等常见问题,然后手撕代码,题目如下: 

现场编程题题目内容:

给定一个数字区间[start,end],区间中不能包含4或者18数字,如418、148、718不能使用,108可以使用,请计算出[start,end]数字区间内有多少个可用的数字;

输入:两个整数[start,end],用于表示数字区间,在0~100000

输出:一个整数,代表可用的数字数量;

``` 

​ 问的少+题简单,记得大约10分钟就结束了,没什么值得一提的。   

(2)第二次测试技术面: 

​ 先是自我介绍,然后问了一些测试的比较深入的问题,以安全测试为例,我学的比较浅只知道有这么一种类型的测试,但面试官会问用哪些工具进行安全测试、安全测试具体流程之类的问题,差不多什么都答不上来吧。不过好像有问黑盒白盒测试的问题,这个属于常见问题所以有准备。手撕代码题目如下: 

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。

输入:nums = [2,7,11,15], target = 26

输出:[2,3]

输入:nums = [2,7,11,15], target = 99

输出:不存在

``` 

​ 这题和Leetcode第1题两数之和差不多,不过题目没说明是否每种输入最多只有一个解,于是问了问面试官确认了最多一个解,然后很快做完了。     

## 总结 

​ 除了机试有些难度以外,其他环节把栗栗姐发的资料看一看就准备的差不多了,如果还有问题可以和栗栗姐沟通沟通或者上网花一点时间搜搜相关知识就能解决。再次感谢栗栗姐对我的帮助。 

​ 以我个人的这次经验来看,主要的准备应该是机试前刷Leetcode和栗栗姐给的题库。机试记得花一些时间在牛客网上刷一点题,主要熟悉一下答题环境,也不用刷太多。机试时遇到不会的题先跳过,反正之后能再回来做,合理安排时间挺重要的,我就因为时间分配不合理最后分比较低勉强过了。机试时可以用本地IDE,代码补足功能可以节省时间(最好牛客在线)。 

​ 资格面和主管面前可以和栗栗姐沟通沟通,对于几个常见问题提前准备一下自己的回答,这样就算遇到要求比较严格的部门也能自信应答。 

​ 技术面准备时看的八股资料算是准备时间第二长的部分吧,但其实我感觉测试岗花几天看看基本知识和面经就行。开发岗可能要背的八股会多一些,但感觉问的知识也不会很深入,最难的可能就是哈希表怎么实现的,剩下的都问的比较浅,所以八股里那些看不懂的知识也不用太为难自己。手撕代码有问题(比如要不要区分大小写)记得及时与面试官沟通。 

​ 台式机记得准备一个电脑摄像头,机试和后面的几次面试都用得上。

#内推##华为od##华为##招聘##发面经攒人品#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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