华为暑期实习生全过程记录
简历投递
3.31日前截至,需要记住自己的简历编号。
在线测试
在线测试由36道题组成,需要在120分钟内完成。官方给的建议是:答案并无对错之分,试图猜测答案往往会导致你的测评结果无效或导致相反的结果,所以请放松心态,保持答题一致性,无需在每道问题上进行过多思考,轻松作答即可。
个人建议: 在保证前后答题态度一致的前提下,尽量做到行为不偏激、好奇心不要过重、不要评头论足、不好过于体现自己领导别人的一面,在积极的方面,做到适当接受压力和加班、体现团队合作精神和乐观能干。
性格测试:满分5分,3分即合格。
主要分为考察你的优良品质。比如乐观积极、喜欢压力、团队协作、善于倾听和参考意见、能够按时完成任务、循规蹈矩、守时等,不希望性格测试里有很多不安定的因素比如领导力、叛逆心、遇事会紧张、健谈等。
笔试
==强烈建议:==由于笔试在牛客网上进行,不同于Leetcode,需要我们提供完整的代码,而且测试用例的交互完全通过合法的输入输出进行!本人就是因为有点忘记Scanner的一些用法,导致在搭代码框架的阶段花费了大量时间!
- 第一题
输入的字符串超过8个字符的,按8个截一段,最后不足8个的补0到8个,最后将重新得到的字符串按升序排列。
输入描述:输入一个数字N ,N个字符串 ,中间以空格隔开
输出描述:排序后的字符串
例:输入:2 abc 123456789 输出: 12345678 90000000 abc00000
import java.util.*;
/**
* @author matthew huang
* @description
* @date 2019/4/10 10:07 PM
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] s = new String[n];
for (int i = 0; i < n; ++i) {
s[i] = in.next();
}
System.out.println(solve(s, n));
}
public static String solve(String[] s, int n) {
List<String> list = new ArrayList<>();
//得到符合规律的字符数组
for (int i = 0; i < n; ++i) {
int len = s[i].length();
if (len == 8) //长度为8
list.add(s[i]);
else if (len < 8) { //长度小于8
int diff = 8 - len;
String temp = "";
for (int j = 0; j < diff; ++j) {
temp += "0";
}
list.add(s[i] + temp);
} else { //长度大于8
while (len > 8) {
list.add(s[i].substring(0, 8));
s[i] = s[i].substring(8, len);
len = s[i].length(); //i已经后退一位了
}
--i;
}
}
//排序
String[] res = list.toArray(new String[list.size()]);
//另一种转换方法
// String[] res = new String[list.size()];
// Iterator<String> iterator = list.iterator();
// int i = 0;
// while (iterator.hasNext()) {
// res[i++] = iterator.next();
// }
Arrays.sort(res);
String resStr = "";
for (String temp : res) {
resStr += (temp + " ");
}
return resStr.substring(0, resStr.length() - 1);
}
}
- 第二题
题目描述:输入一个字符串,含有括号(大括号,小括号,中括号),数字和字母,数字(n)之后必跟一个括号(测试用例里的括号都是匹配的),代表括号内的字符串重复(n)次。括号里可以有嵌套,即括号里含有括号。现在将输入的字符串逆序展开;
输入描述:字符串,例:abc3(A)
输出描述:字符串,例:AAAcba
//写出基本的算法,可以通过20%的测试用例(别问我个菜鸡怎么知道的)
//注意括号嵌套的情况,可以用递归实现
- 第三题
输入一个N*M矩阵栅格,每个栅格都有一个高程值代表海拔高度,小明从出发点到终点有几条不同路径?每次只能往更高海拔的地方去,走过的地方不能再走,只能前后左右走。
例:输入:
4 5
0 1 0 0
0 2 3 3
0 3 0 0
0 4 5 6
0 7 6 0
0 1 4 1
第一行代表M*N,网格大小。后面是M*N的矩阵。最后一行前两个数字代表 起始坐标,后面两个数字代表 目的坐标(坐标从左上角(0,0)开始)。
输出 :2
华为网络精英挑战赛——基础开发Java方向
一、初赛
考试时间:4月14日下午14:00~15:00,共60分钟(也有上午场)。
考试题型:本次考试共83道题,包含判断、单选、多选(错选或少选不得分)三种题型,分值分布大概为1:1.5:1。
考试大致范围:计算机网络、Linux、Java基础知识、Java虚拟机与多线程、华为5G和网络知识、新模式新概念。
我一直以为网络精英挑战赛只是关于网络技术的比赛,后来才发现有Java和C++的基础开发方向。如果是科班出身的话,我认为考试内容应该是比较熟悉的,并不会非常难。
以下为我记录的一些比较模糊的知识点:
1. Java中suspend()函数
2. 什么是目标代码
3. Linux文件长度不超过128字节吗?
4. Linux中adduser和useradd都可以添加用户吗?
5. 后台启动进程可以用Ctrl+C终止?
6. 无缺省路由且目的地址不在路由表中的报文会被丢弃?
7. 什么是IaaS
8. 什么是RPO
9. FC-SAN与IP-SAN的差别
10. double d = 8 / 5;的结果
11. 多线程中notify()和wait()方法
12. 程序段运行结果,我省略描写了
static int x = 10;
static { x += 4; }
psvm() { sout()x; }
static { x /= 3; }
13. Linux中mv操作会改变文件修改时间吗?
14. 以太网链路层聚合在哪一层实现?有什么优点?
15. 删除/home中的一个用户,其对应的文件怎么处理?
16. 异常和错误码可以混用吗?
17. 绝对命令、汇编命令、class代码、可重定位命令哪些是低级语言?
18. 查看Linux的CPU、内存使用情况的代码,stop和free是什么?
19. NAS与文件服务器的特点
20. X86服务器一般是哪几种?什么是Aix?
21. Shell命令中#@¥*&等分别是什么意思?
答案:
1.
10. 1.0
12. 4
二、复赛和决赛
被暑假实习生挂了这件事郁闷了很久,拖了将近两个月才开始续上这个博客。
之后我又参加了华为网挑的复赛和决赛,其中复赛会在你所在的赛区中华为base较大的地方举办,决赛就是在深圳华为大学举行。
-
复赛
题型:(个人赛)
Part 1:上机
给定业务背景,一般是GTS数据工程师的业务中台背景,让我们用Java模拟数据库实现一些表关系的设计,以assert的形式,根据通过测试的数量给上机分。
Part 2:答辩
此外,Java方向还有一个分组答辩,以小组为单位,类似群体面试,一般会问到一些宏观角度的问题。如给定一个业务场景问你怎么解决、给定上述若干原则请你排序等等。会有面试官在现场考察你们小组讨论和答辩的情况,根据你的表现来给分。
形式: 先自我介绍,再给出问题小组讨论,再小组演讲,最后评委提问。
结果: 我们赛区是只有前十名进入决赛,各个赛区人数不同,一般是10~20人不等,为5的整数倍。 -
决赛
题型:(团队赛)
Part 1: 云平台操作
Part 2: Java设计
我主要负责的是Java设计方面的内容,跟复赛类似,决赛是以GTS数据工程师数据中台业务背景,涉及数据清理、数据处理、数据输入输出等数据相关内容。成绩仍然是以assert通过测试数量来判断。
Part 3: 方案设计与现场答辩
这部分需要输出一个PPT,并且需要队员来展示,主要内容是华为学习网站给的知识点,主要是网络技术方向的同学需要重点把握的方向,当然Java开发的同学也可以适当学习给予团队帮助,需要看个人学习成本和基础,以及Java设计方面的压力。
团队组合:三个网络技术方向的同学+两个基础开发方向的同学(C++/Java),个人建议开发方向的内容一个人去完成就好。
后续面试
通过比赛,我获得了实习面试的机会,HR给我分配到了Java开发岗,如果没有拿到好名次直接进华为实习(不知道是不是固定部门,我猜是复试给的面试绿卡上的两个职位的实习生),像我这样还是需要后续面试的。
一、技术面
- 形式:
电话面;20分钟以内。 - 内容:
主要跟我聊了一下自己的一个Java项目,除了基本的开发基础知识,可以突出自己学习的Nginx、SSO、前端框架和其他一些前沿技术。其中,在我提到了微服务的概念,面试官不出意料的问到了我对微服务的理解。
整个面试过程以我自述为主,面试官没有任何的刁难,之后,面试官根据我的能力和相应业务的匹配度,跟我聊了他们业务中跟我较匹配的部分。
面试最后轻松愉快的结束了。因人而异,这次面试没有问到虚拟机、Java底层源码、对框架的理解等问题。
二、综合面
- 形式:
加了微信,由于我在外面,预计视频面改成了电话面;15分钟左右。 - 内容:
综合面之前我特意查了网上的一些面经,结果面试官压根没问到个人想法、经历等问题,也可能是我这次面试的业务主管是技术相关的原因。
面试官主要针对我优势点进行询问,因为对应的部门做Java Web相关的业务,着重问了我这方面的项目经历和对一些技术的理解。在面试最后,面试官直接给出了面试的结果,也是比较顺利的完成。
跟业务面的区别就是,综合面更看重你的特长,问题也不会深入到技术细节,比较关注你对某个领域较为全面的了解。
最后环节
由于流程的完整性,我还必须完成最开始的机试,3道题完成一题即可。耐心等待吧……
中途HR告知由于本应在之后的面试流程已经完成,我的机试可以不用做了。我将官网投递信息改为相应的第一意向部门和职位,HR在录入面试意见之后,我的状态便变为面试已完成,录用排序中
。
现在入职了,回过头来把内容补充完全。大约一周后,我收到了正式录用的邮件,邮件里会说明你的薪水和工作地点和一级部门。
入职指导
考虑到信息安全,下面的内容不配图了
Step1. 网上信息填报
根据收到的邮件信息,登录新员工页面,注册自己的信息,并上传白底的证件照用于制作工卡(实习生会发临时通行证,用处不大)。此外,最重要的就是选择报道时间,一般推荐每周的周二或周四实习报道。
Step2. 报到前准备
直到报道日期,系统会陆续发送一些帮助文档,这个阶段你需要联系租房和购买前往实习地的机票/车票。
租房:推荐几个寮步镇的小区:翠珑湾、保利红珊瑚、万科、松湖里的鱼、松湖传奇,我个人是住在翠珑湾,房型是loft复式,感觉实用性不大,很多设计也不是很人性化,价格在2500一个月左右,每个月还需要支付水电费、燃气费、物业费、网费。
机票/车票:机票可以报销经济舱和托运费,车票可以报销一等座,从家里/学校到实习地的一系列交通费用均可报销。
Step3. 报道
推荐乘坐班车前往实习地,东莞地区的小伙伴可以关注“东莞行政服务”公众号查询班车信息。到达之后溪村的小伙伴是在F区1F办理报道流程,根据提示排队完成报道即可。之后你会收到分配的具体部门地址和联系人的信息,以及你的临时工卡,如果你需要乘坐班车需要在食堂自行办理一卡通。
Step4. 部门报道
根据短信提示,前往相应的部门所在地,联系接口人,一般是部门秘书,他/她会带你到分管你的导师的地方,到这里,你就算正式入职了。第一天,主要就是等待设备信息和配置手机端的WeLink应用等。
入职半个月了,后续的信息我会持续更新在这篇博客里。。。