我的华为提前批面试经验
机试
很简单 就不多说了 和下面这位大神差不多 但是 我只做出一道题目 不过一道题目有够资格面试了
1面 是技术面 首先看看你的简历
问了一点你的项目 可能是太简单了 然后他就会问别的基础的嵌入式的 东西
首先考的是malloc malloc 虽然有的时候可以用一个大数组替代但是太浪费资源了
另外在 操作系统 似乎会经常用到 malloc函数
写一个关于的malloc的函数 什么双指针
要用双指针 才能正确返回地址。
void malloc_pp(int**p,unsigned int t)
{
*p =(int *) malloc(t*int);
}
第二个是写 数组的插入和删除 比较简单 我用了一个临时变量很简单了
第三个 是树的遍历输出,忘光了
第二面也是 技术面
问的是回形输出数组里的元素 但是脑子有点乱 没想出来。。。下面是网上的
#include <stdio.h>
int main()
{
int row,col;
int i,j,n,time=0,t;
t = 0;
row = 10;
col = 10;
int array[100][100];
for(i=0;i<row;i++)
for(j=0;j<col;j++)//你好像写成了:for(j=0;j<row;j++)
array[i][j] = t++;
for (n=0;;n++)
{
for (i=n;i<col-n;i++)
{
printf("%4d\n",array[n][i]);
time++;//每执行一次输出操作,time的值增加一
}
printf("\n");
if(time==row*col)break;
for (j=n+1;j<row-n;j++)
{
printf("%4d\n",array[j][col-n-1]);
time++;
}
printf("\n");
if(time==row*col)break;
for (i=col-2-n;i>=n;i--)
{
printf("%4d\n",array[row-n-1][i]);
time++;
}
printf("\n");
if(time==row*col)break;
for (j=row-2-n;j>n;j--)
{
printf("%4d\n",array[j][n]);
time++;
}
printf("\n");
if(time==row*col)break;
}
return 0;
}
好像还问了类型的隐式转换
好像是 unsigned char 和 char 之间的 隐式转换
这是一个大神的 姑且转载
华为面试总结
刚开始找实习的时候在华为官网上注册了简历,收到机考通知的时候已经在实习了,所以没有去参加。前几天又收到机考通知,决定去试试。考试前一天晚上去刷了两道PAT的题目,第二天就去机考了。机考的时候先做性格测试题,题目有点多,按照自己的想法去做就行。接下来是做三道编程题,两个小时时间。第一题是交叉排序,输入一个串数字,把奇数位的数字从小到大排,偶数位的数字从大到小排,例如输入7 3 5 9 输出5 9 7 3。这题排序是很简单,都写烂了。关键是输入,以前做的题目都是第一个输入数组的长度,再输入数组的每个元素,但这个并没有。只能靠自己计算元素的个数了。第二题是还是排序,如果有连续的整数就只输出头尾两个,例如输入7,11,5,6,9 输出5 7 9 11。做这个题目被坑了好久,还好最终做出来了。第三个题目是一个由0和1组成的矩阵,从里找出一个最大的全部由1组成的正方形。我用最暴力的方法,扫描所有情况选出最大值,没想到竟然通过了。三题做完,先行离开,估计差不多也用了两个小时时间。
又过了几天终于收到华为面试的通知,于是问了下上一届进了华为的学长面试的大概流程和注意要点,学长给的建议是面试的时候带上简历、成绩单和荣誉证书复印件,准备一个项目,在项目中自己负责哪些模块,遇到哪些困难,怎么解决。成绩单没办法,学校教科办都放假了。把荣誉证书复印出来附在简历后面确实有用,几轮面试的时候面试官都会仔细看看你的荣誉证书。至于项目,我简历上项目经历写了四个,每个都是切身参与的,应付考官应该没问题。
收到面试通知第二天就去香格里拉酒店面试了。第一面是技术面,一上来就给题目做,第一道是切豆腐问题,一块豆腐切成27块最少要几刀。我一想这个问题很简单,每个方向切两刀,8刀就可以。下一题是找规律:
1
11
21
1211
111221
下一行是什么?当时我看了半天实在做不出来,放弃了。第三题是跑马问题,25匹马选出最快的3匹,每次只能5匹马比赛,没有秒表。这道题要自己做出来的话估计还要想好久,最终还是在面试官的引导下才做出来的。接下来三道C语言的题目,很基础。一题求结构体大小,一题看类似strncpy的函数,只是复制指定长度字符串长度后会加’\0’。可惜标准库中的strncpy函数我记错了,我以为strncpy也是会加’\0’的,这题又掉坑里了。最后一题,一个字符串中间有个’\0’求strlen 和 sizeof 。接下来就开始问项目,面试官具体问了两个项目都问的非常细。
第二面的时候,坐下来面试官就说你自我介绍一下,我吧啦吧啦介绍完,面试官问我不用中间变量的方法怎么交换两个变量。我暗自得意了一下,关于变量互换我还发过博客的http://blog.csdn.net/u013407923/article/details/50753236。我说这个有两种方法,我就吧加减和异或两种方法写出来了。面试官问我加减的方法有没有什么问题,我说如果把这个方法写成函数,用指针传参数进去,如果传进去的地址一样就会有问题。面试官又问除了这个还有什么问题,我说没有问题,即使两个变量相等也没有问题,甚至两个变量相加超出整形的表示范围也没有问题。面试官没继续问我下一题,shell脚本怎么执行。这个问题又简单了,我说有可执行权限的怎么怎么执行,没有可执行权限有怎么怎么执行。面试官又问我要编辑shell脚本怎么办,我说vim或其他编辑器打开就可以。第三个问题我还真不知道,两个不同网卡配置成相同的网段能不能通信。问完三个问题又开始问项目,吧啦吧啦又问了好久。最后面试官说我这关你是过了,你有什么问题要问吗。我就问了下我这种种情况进华为哪些部分比较合适。
第三面还是自我介绍,当我介绍到做项目的时候就开始问我项目里面的问题了,简单了解了下项目大概内容,问了两个细节问题。最后问我还有什么想了解的有什么想问的,我说暂时没有了。第三轮面试时间比较短一些。不管怎么说三轮算是都面下来了,结果怎样就等通知了。