华为2019勇敢星实习生笔试面经

 首篇博客,简单谈下自己,笔者是华东师范大学计科与软院研二学生,自己的技术背景或者资本,就是本科自学 Java 编程,写过一些游戏和 JavaWeb 应用,研究生阶段在各种 Cloud+AI 的煽动声势下又自学 python 和 scala 两种语言用于后面算法的学习,神经网络,深度学习跟着吴恩达视频和周莫烦鼓捣过一段时间,理论和实践不是很深入。遂后来放弃机器学习算法转而熟悉大数据相关技术,Hadoop看过大象书,按照博客和视频学习,包括 Hive,HBase,kafka,zookeeper 都在虚拟机下操作过,后集中精力学习 Spark 分布式计算框架,编写一些 demo 对海量数据做简单处理,但是对框架原理和调优还不是很熟悉。在这样的情况下,决定就 Java 后端研发和大数据开发两个方向作为实习选择。在华为这里就是投的大数据开发实习岗。下面记录了从宣讲到面试结束的过程,一周后会出结果,到时候再做更新。对了,笔者是本科数学研究生密码学,本专业浅尝辄止,勉强能毕业,苦笑~

大概一个半月前(现在刚结束技术面)华为宣讲会,去得人还是蛮多了,勇敢星实习在HR们的介绍下内容还是很丰富的,同时还有我校的校友介绍的华为的精英大赛,分了网络精英,算法精英,销售精英。这些比赛的奖励都还是很有含金量的,各种直通特权,但难度也可想而知,现场讲了一道往届的题目,被搞晕了。在宣讲会大概记下了网申,笔试等信息,结束就回去了。

宣讲会后不到三周(只要截至时间前投出简历),笔试通知就下来了。三道编程题,测试环境有几点:

1,摄像头

2,可以本地 IDE 编辑代码,复制到 OJ 上提交

3,全程录屏(这个措施还是能判别出大部分不那么正规答题的情况,不是按自己思路写的话,很容易看出来代码是腾挪的)

第一道:连续输入字符串(输入字符串个数为N,每个字符串长度不大于100,输入字符串间按照空格键分隔),请按长度为8拆分每个字符串后输出到新的字符串数组,输出的字符串按照升序排列。长度不是8整数的字符串请在后面补数字0,空字符不处理。

输入样例1:
                   2 abc 123456789    注:2 = N 输入字符串个数
           输出样例1:
                   12345678 90000000 abc00000

第二道:给定一个字符串,字符串包含数字、大小写字母以及括号(包括大括号、中括号和小括号),括号可以进行嵌套,即括号里面可以出现数字和括号。按照如下的规则对字符串进行展开,不需要考虑括号不成对不匹配问题,用例保证括号匹配,同时用例保证每个数字后面都有括号,不考虑数字后面没有括号的这种情况,即2a2(b)这种情况不考虑。

输入样例1:
                   abc3(mlg)
           输出样例1:
                   glmglmglmcba
           输入样例2:
                   abc3(A)4(mufasa)
           输出样例2:
                   asafumasafumasafumasafumAAAcba
           输入样例3:
                   abd2(3{4[q]w}e)
           输出样例3:
                   asafumasafumasafumasafumAAAcba

第三道:一张N*M的地图上每个点的海拔高度不同;从当前点只能访问上、下、左、右四个点中还没有到达过的点,且下一步选择的点的海拔高度必须高于当前点;求从地图中点A到点B总的路径条数初以10**9的余数。地图左上角坐标为(0,0),右下角坐标为(N-1,M-1)。

           输入描述:第一行输入两个整数N,M(0<N<=600, 0<M<=600)用空格隔开;接下来N行输入,每行M个整数用空格隔开,代表对应位置的海拔高度(0<=海拔高度<=360000);最后一行四个整数X,Y,Z,W;前两个代表A的坐标(X,Y);后面两个代表B的坐标(Z,W);输入保证A,B坐标不同,且坐标合法。
           输入样例1:
           4 5
           0 1 0 0 0
           0 2 3 0 0
           0 0 4 5 0
           0 0 7 6 0
           0 1 3 2
           输出样例1:
           2

           输入样例2:
           4 5
           0 1 2 1 0
           0 2 3 2 1
           0 0 4 5 2
           0 8 7 8 9
           0 4 3 4
           输出样例2:
           10

之前做了一套微软的笔试题,然后刚看到这三道题,难度上松了一口气,毕竟前两道肯定就是字符串处理,利用 Java 封装好的对象还是很快会有思路。先简单说一下前两道题:

第一道,首先就是判断每个字符串的长度,小于长度 8 补齐,否则截取(substr method)前八位作为一个新的字串,直到把字符串截取多段长度 8 的字串,最后一段不够则补齐

所有长度为 8 的字符串统统放到容器(Collection)里,Java 有现成的 sort 方法,将容器里所有的字符串按照字典顺序升序排列

第二道,这道题目和数据结构书介绍栈的时候,拆解嵌套数学表达式计算结果十分相似,所有没有犹豫直接用栈来处理输入内容

题目就是说,遇到 number(string) 这种组合,要变成 number 个string 连接起来。先不考虑嵌套,我们压栈时压到右边括号时,此时栈内必须存在一个数字和一个对应的左边括号,我们就不断弹出栈顶元素,直到弹出左边括号的过程中,将括号内字符串暂存起来,考虑栈先进后出的特性,需要把字符串 reverse 一下,保存了要连接的字符串,还需要知道 number 这个数量,此时这个 number 正好在栈顶,弹出之后,将字符串按照这个数量连接,连接的结果重新压入栈中,number(string) 这种组合,就被按照题目的要求替换掉了。

这个时候再考虑嵌套,让我们思路打开一点,是不是即使嵌套,由于栈的特性上面的处理方法是可以先将嵌套内部替换之后,再接着处理外部的字符串的,这是完全符合要求的。注意三种括号 “{} [] ()” 在写代码的过程过一定对应好流程控制语句。

A了两道题之后,我就觉得是可以有面试资格的。由于第二道编程的时候长度的变量,还有循环的边界没有搞清楚,一开始通过率都是百分之零,调了好多下,最后一次一下子全部通过了,看看这个时候还剩余三十分钟时间。

第三道题,也容易想到 DFS 算法,但是可能并不能通过全部用例,加上我手写 DFS 没那么熟悉,这道题就放弃了。这道题的解法网上有很多优秀的算法,这里有时间再转述。

笔试结束,华为的面试来得稍迟。上海的面试地点是在一家四星酒店宴会厅,摆了 40 张两米长桌,同时可以面 40 位同学,虽然大家都在一个空间中,但丝毫不用担心旁边的对话会影响到你和面试官的对话,大家都是高度集中的。等候区有甜点咖啡水果,中午有自助餐券,哈哈,不错!

先说第一面,面试官上来说了我们是老乡,顿时松缓了一下心情。自我介绍,和上面说的技术发展和意向差不多,然后面试官就开始抛问题出来,期间答得还没深入一点的时候,面试官就说下一题了,也不知是帮助我还是面试官也搞不定太深的内容。其中回忆起来的有:

面向对象的特性有哪些?

Linux 的常用命令?

数据库增删改查会吗?会的话举例子?

举例子说明表的几种 join 的区别?

消息中间件知道哪些?什么场景用?有哪些好处?

……

特别基础感觉像本科科班的期末卷子,过程也零碎,可能价值也不大,回忆有些困难就打住了。感觉一面不会拖后腿至少,午餐之后等来了二面。

和二面面试官开始没多大一会儿,就知道这是一个谈笑间能把人问透,问死的人。头发不多,眼神精确,经验足,说话直接了当,看你迟疑就认定你不会直接跳下一题,所以满打满算大概有半个小时,时间相当短促,或许面试官已经知道我几斤几两,把我简历一合,让我回去等结果。

首先问的是实习经历,我有两段实习经历,SAP 打两个月酱油, 然后在一家中型大数据基础平台公司实习。表述自己的实习内容的过程中还是润色了一下,但是面试官中间发话钉住我,你参与这个系统开发,你到底了解不了解,底层怎么实现的?能不能讲清楚?我说去的时候大体已经写好,自己也是有一些根据需求做改动的任务。

跟实习相关的流计算这一块,聊到 Spark,问,你了解 Spark 的内核原理不?我因为看过网上分析的文章,随口就说了声了解,也看了源码。结果真正作答的时候,卡壳,driver,scheduler,task 等等基本概念都联系不起来,给面试官的印象相当不好。

然后问 Java 设计模式了解不?说说看。我就从单例出发,聊了工厂,装饰器,其它的没多说。面试官又问,为什么要用这些设计模式?就从解耦,扩展等方面说了个大概。

然后直接问 JVM 了解不?说一说。刚开始听到感觉问题好宽广,想着就从 GC 开始吧,没说两句打断我,先说说内存吧。然后就想着说堆,栈,方法区等等,他说还有呢!我想了一会怯怯的说:“缓存?” 面试官白了我一眼开始问下一题了。

然后聊了一下我的学术论文,虽说我是浅尝辄止,但是如果对方不是这个领域的我还是蒙混过去,但是感觉上,面试官内心不喜欢。然后就突然的说,现在你有什么问题?

我就没客气,心想不能这么快结束啊,问了三个问题,个人选择,职业发展,面试交流和简历上的缺陷。面试官大人一条一条跟我说了,末了给我说多看看原理,多实践,言下之意我也能知道,自己这方面做的不足。

迫不及待回了学校,一周后出结果。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值