华为cbg 软件开发面经

本人坐标大连,去年年底秋招补录过的。申请岗位是cbg的Android开发。距离面试刚好两个月了,趁还有些记忆写点东西记录一下备忘。

机试
华为标准三道题。
  1. 第一道基本功,折腾字符串和标准输出。
  2. 第二道是算法题,奥特曼打怪兽,从n方阵的左上角走到右下角,然后再返回起点。有三种格点:
    值为0,正常可通过;
    值为1,奥特曼可通过,同时还可以消灭怪兽,消灭后值变为0且怪兽不会复活,消灭怪兽数量+1;
    值为-1,有大石头,奥特曼无法通过。怪兽死后不会复活。
    奥特曼可以消灭怪兽的最大数量。
    解题时用回溯法,时间复杂度挺高……这道题C++给时为2s(其他题目只有1s)说明允许使用高复杂度的算法解题,于是乎不管最优解,硬刚就完事了。
    写完算法没AC,只有66.6%的通过率,可能有些细节没考虑到。
  3. 第三题是日志格式化输出,给定长日志输入,按照需求把相关的报错信息输出并计算出错时长等信息。
    也比较简单,还是折腾字符串和Map,利用好Map和List很容易解题。

专业一面

华为一面为技术面,在笔试结束后大约1周内收到了面试通知。华为是一天三面全部安排完,为了招聘的高效率吧……但是对于求职者来说还挺低效的😛
问了大概以下几个问题:
  • 介绍自己和相关项目(相关项目问的不深,主要还是问职责和遇见的问题和解决措施
  • Socket相关知识点
  • Android Binder 进程通信的原理,以及AIDL开发(简历里写了这一项,重点询问。不过我答得不是特别好,就会打了个大概,描述清楚了怎么使用而已
  • Handler,MessageQueue、Looper相关原理
  • JVM内存模型
  • Java Native 使用方法以及JNI的编写方法(项目中用到过,回答的比较全
  • 是否读过Android源码(回答很套路:在读……
  • Android内存回收(项目里没遇到,只说了自己了解的一小部分
  • 手撕代码,挺简单的一道题……基本难度那种,印象不深刻忘记了😂
一面挺快就结束了,一共也就40分钟左右,问的不是很深,而且我是有一些实习经历和项目经历的,估计面试官把重点问题都留给二面了。

专业二面

二面面试官明显是个团队Leader级别的人物,气质跟第一面完全不同。
上来直接介绍自己和项目,并对项目一通追问。
项目详情:Socket内网通信,使用TCP协议,出现了丢包问题,怀疑是路由器质量差,丢包延迟问题严重。通过C/S联调以及更换路由器后,改善延时,但仍有丢包。后续发现是代码逻辑bug,缓冲区长度限制导致了阻塞。
大概就是这么个项目,然后这位面试官从一路追问,刨根问底问具体是什么情况导致的延迟丢包问题,从路由器问到ReceiveBuffer,最后得意地发现其实路由器质量不是根本问题,代码逻辑bug才是😐(其实我简历上没写那么多……一句话带过了而已,就这样追问了大概十分钟……
然后是开始提问:
  • Java 里 static 修饰 类、变量、方法各有什么含义?(我Java基础差,答得不是特别好,零零星星回答的,没有逻辑
  • Android Binder(一面问过,这次问的更深,探讨了什么是Android的DataBinding技术。这个项目经历中有用过,我结合MVVM谈了下理解
  • Handler 和 MessageQueue相关问题(没错,也是一面问过的,都是重点啊
  • Git 中 merge 和 rebase 的区别(我:???,面试官看我简历里有些熟练使用Git,然后问我这两个操作的区别……我从没准备过这种问题,谈了谈大概的用法,但是没说清楚具体的区别。最后只能说,我会用,但具体区别我说不明白😂
  • 设计模式,直接手撕代码,实现一个单例模式。(这个用的多,比较熟悉,直接写了个饿汉式出来。完了面试官询问写的是什么模式,也就顺利过了。
  • 手撕代码:输入一个字符串,输出最大回文字符串。(也是入门题目,leetcode上忘了是初级还是中级了,以前做过但是生疏了……用了挺长时间,但是没做全,有种情况没考虑到。XXXABAXX……这种写好了,但是XXABBAX……这种完全没考虑到。面试官觉得勉强过但是又不够好😂于是又给我出了一道题
  • 手撕代码:输入一个(有序)数组,然后给定一个范围,左界和右界,输出这俩的交集。(我没注意到数组是有序的,写这个算法多花了点时间去排了个序,然后再输出。题目比较简单,也就快速过了。
因为写代码时间比较多,二面问了一个半小时左右。面完了心力交瘁……最后面试官给我个评语:勉强给你过了,但是你基础不够好,如果来本公司上班,要自己抽时间巩固基础。所以基础还是重要哇……

主管面

第三面是主管面,基本就家庭啊,职业规划啊,预期城市啊啥的。
也简单问了问项目,但还是对问的的解决策略和担任的职责去提问。
还问了为什么选择华为,以及选择这个岗位。
还有对待996加班的看法。面试华为的同学应该要对这个问题体现想好自己的看法
对了,还有成绩单。主管面会看学校成绩。
大概20多分钟就完事了。之后就是等通知结果了。

总结

本人是电子通信工程专业,本科应届生。学的知识其实和Android不是那么搭边,最后也是凭借个人兴趣和发展规划选择了Android开发这条路,对专业来说,算是半个科班生。
Java语言和Android也是半年前才接触的,只能说,编程这东西是相通的,理解算法和数据结构远比只学某种语言更重要;而且解决问题的逻辑也比重复机械地背代码重要。再就是要有创新精神,做技术要与时俱进,时刻关注新技术,随时更新自己的技术栈才能保证自己不落伍。
大公司需要的都是能干活的员工,提升自己解决问题的能力很重要,相比学校里学习的理论知识,实战项目更看重debug能力。

最后,这篇文章也挺长的,希望所有能看到这里的同学都能还愿~大家加油~
#华为##面经##Android#
全部评论
请问机试第一题就是牛客里华为机试题里那样的对输入进行修改然后输出的题吗?我看前两天的面经机试第一道就是动态规划😂
点赞 回复 分享
发布于 2020-02-24 19:38
我也马上面软件开发工程师了,面试前需要先过哪些知识啊
点赞 回复 分享
发布于 2020-02-28 12:05
问下主管面结束后官网一直显示主管面未完成。是不是还没有登结果? 我那个主管好像对我很不感兴趣,做了自我介绍+一点项目就结束了,一共不到20分钟
点赞 回复 分享
发布于 2020-02-28 12:19
作者:swing666 链接:https://www.nowcoder.com/discuss/363253 来源:牛客网 本人在华为的2012实验室—产品数据部搬砖,最近在帮大佬招聘,有大量内推名额,有意向的小伙伴可以联系我哦 职位:产品数据工程师 岗位职责: 1、通用软件开发/大数据/搜索等方向 2、通过开发系统,软件,工具等,助力华为产品和产品开发全过程实现数字化/可视化 (我们目前岗位统称为产品数据工程师,但是进到部门之后,会有很多项目组,包括智能推荐、搜索、软件开发、测试、前后端、大数据分析等等,可以根据自己的意向选择) 招聘对象: 海外院校;2019年1月—2020年12月间毕业(全球排名Top100院校) 国内院校:2020年1月—2020年12月间毕业(211及以上院校) 港澳地区:2019年6月—2020年12月间毕业 岗位要求: 1、计算机、统计、软件、数学、统计学、通信、人工智能等相关专业本科及以上 2、热爱编程,基础扎实,熟悉掌握但不限于Java/Python/c++/JS/HTML/GO等编程语言 3、对数据结构、算法有一定了解 补招一名UI设计的岗位,有意向也可以投递哈! 有意向的把中文简历发我邮箱 qiuxian@huawei.com 有问题可以咨询我,微信:530418025
点赞 回复 分享
发布于 2020-02-29 18:27

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
11
43
分享
牛客网
牛客企业服务