
首先资格考试和面试(相应职位的资深工程师主持);
其次应聘职位的部门付经理面试
再次应 聘职位的部门付经理面试
再次人事面试
最后是付总级的面试。
常问问题:
Q1:请你分别划 划OSI的七层网络结构图,和TCP/IP的五层结构图?
Q2:请你详细的解释一下IP协议的定义,在哪个层上面, 主要有什么作用? TCP
与UDP呢?
Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次 上面实现的?
Q4:请问C++的类和C里面的struct有什么区别?
Q5:请讲一讲析构函数和虚函数的用法和作用?
Q6:全局变量和局部变量有什么区别?实怎么实现的?操 作系统和编译器是怎么知
道的?
Q7:一些寄存器的题目,主要是寻址和内存管理等一些知识。
Q8:8086是多少位的系统?在数据总线上是怎么实现的?
测试题:
1、由于你是新员工,没有公配手机时,当你在现场遇到紧急事故时,你会()向公司求助
A、打用户机房内的电话
B、借用户手机
C、拔110
D、拔200或300
E、立即打车回办事处
(答案:D,答CE者立即辞退,按照公司规定,不能随便使用用户的电话,以提高公司
形象)
2、工程师A 某周日晚正在家里看电视,突然手机响了,电信局运维员工突然
打电话过来,小A接起电话,用户声音很急迫,说:“不好了,瘫了,你快来处理”。
请问这里“瘫了”最有可能是什么意思()
A、设备漏电将维护人员电瘫了
B、设备支架不够结实,被压瘫了
C、设备坏了,将维护人员吓瘫了
D、设备坏了,大面积业务中断了
(答案:D,答错者,按不合格处理)
Network:
1. 如何设计一个模型来检验通信协议的正确性?
2. 位于网络两端的计算机的 连接过程是怎样的?
3. 链路层的协议?
4. FSM和PETRI网哪个好
5. 中国一 号和七号信令的区别。
Hardware:
6. CPU里面有些什么东东,外面有些什么东东?
7. 指令执行分几个步骤
Languge and Compiler:
9. i = 0, 那么, ++i||i-- 的值?
8. c c++ java的区别?
9. 全局变量、局部变量、静态变量都放在内存的什么地方?
10. 结构与类的区别
11. a*b+c 这样的表达式如何写编译程序?
12 c++虚函数怎么实现
Data structure and Algorthim
13. 写出一个二分函数?
14. 写出一个字符串子串匹配的算法?
15 对一个一维数组排序
Software System:
16. UNIX文件系统的最大优点是什么?
17. fork函数的返回值是?
18.(软件)测试有 哪几种方法?
Database
19. 数据库编程哪部分最重要?
20. 未来的数据库(电子信 息数据库)的走向?
21. 数据库第一范式怎么表示
华为笔试题含答案 [软件工程题]
1.static有什么用途?(请至少说明两种)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被在声明它的模块的本地范围内使用
2.引用与指针有什么区别?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。
7.什么函数不能声明为虚函数?
constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
10.Internet采用哪种网络协议?该协议的主要层次结构?
Tcp/Ip协议
主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析協議)
12.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做
14.不能做switch()的参数类型是:
switch的参数不能为实型。
随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数
/***************************************************************
1.
函数名称:Symmetry
功能: 判断一个数时候为回文数(121,35653)
输入: 长整型的数
输出: 若为回文数返回值为1 esle 0
******************************************************************/
unsigned char Symmetry (long n)
{
long i,temp;
i=n; temp=0;
while(i) //不用出现长度问题,将数按高低位掉换
{
temp=temp*10+i%10;
i/=10;
}
return(temp==n);
}
方法一
/* ---------------------------------------------------------------------------
功能:
判断字符串是否为回文数字
实现:
先将字符串转换为正整数,再将正整数逆序组合为新的正整数,两数相同则为回文数字
输入:
char *s:待判断的字符串
输出:
无
返回:
0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字;
3:字符串不为回文数字;4:待判断的字符串溢出
---------------------------------------------------------------------------- */
unsigned IsSymmetry(char *s)
{
char *p = s;
long nNumber = 0;
long n = 0;
long nTemp = 0;
/*判断输入是否为空*/
if (*s == \\'\\\\0\\')
return 1;
/*将字符串转换为正整数*/
while (*p != \\'\\\\0\\')
{
/*判断字符是否为数字*/
if (*p<\\'0\\' || *p>\\'9\\')
return 2;
/*判断正整数是否溢出*/
if ((*p-\\'0\\') > (4294967295-(nNumber*10)))
return 4;
nNumber = (*p-\\'0\\') + (nNumber * 10);
p++;
}
/*将数字逆序组合,直接抄楼上高手的代码,莫怪,呵呵*/
n = nNumber;
while(n)
{
/*判断正整数是否溢出*/
if ((n%10) > (4294967295-(nTemp*10)))
return 3;
nTemp = nTemp*10 + n%10;
n /= 10;
}
/*比较逆序数和原序数是否相等*/
if (nNumber != nTemp)
return 3;
return 0;
}
方法二
/* ---------------------------------------------------------------------------
功能:
判断字符串是否为回文数字
实现:
先得到字符串的长度,再依次比较字符串的对应位字符是否相同
输入:
char *s:待判断的字符串
输出:
无
返回:
0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字;
3:字符串不为回文数字
---------------------------------------------------------------------------- */
unsigned IsSymmetry_2(char *s)
{
char *p = s;
int nLen = 0;
int i = 0;
/*判断输入是否为空*/
if (*s == \\'\\\\0\\')
return 1;
/*得到字符串长度*/
while (*p != \\'\\\\0\\')
{
/*判断字符是否为数字*/
if (*p<\\'0\\' || *p>\\'9\\')
return 2;
nLen++;
p++;
}
/*长度不为奇数,不为回文数字*/
if (nLen%2 == 0)
return 4;
/*长度为1,即为回文数字*/
if (nLen == 1)
return 0;
/*依次比较对应字符是否相同*/
p = s;
i = nLen/2 - 1;
while (i)
{
if (*(p+i) != *(p+nLen-i-1))
return 3;
i--;
}
return 0;
}
1。数组应该初始化
2。memcpy不判断是否越界,所以调用前应该判断是否越界
3。不应该返回rest,因为这个数组是在函数内部申请的,所以函数结束之后就会消失,指针也会变成“野指针”,所以指向非法地址
最后一个比较隐蔽
char *memcpy( char *dest, const char *src,int len )
{
char* pDest = (char*)dest;
char* pSrc = (char*)src;
int pos;
for(pos=0;pos pDest[pos] = pSrc[pos]; } return (char*)pDest; } 存在地问题就是没有判断指针是否非法assert(dest !=NULL || src != NULL); 条件为 FLASE 显示 不调用其他函数,写一个memcpy的函数,函数原型为 void *memcpy(void *dest, void *src, size_t length); -----------利用好断言--------- /* memcpy ─── 拷贝不重叠的内存块 */ void memcpy(void* pvTo, void* pvFrom, size_t size) { void* pbTo = (byte*)pvTo; void* pbFrom = (byte*)pvFrom; ASSERT(pvTo != NULL && pvFrom != NULL); /* 内存块重叠吗?如果重叠,就使用memmove */ ASSERT(pbTo>=pbFrom+size || pbFrom>=pbTo+size); while(size-->0) *pbTo++ == *pbFrom++; return(pvTo); } ----------------------- 常见函数编程: char *strcpy(char *strDest, const char *strSrc) { ASSERT(strDest != NULL && strSrc != NULL); char *addr = strDest; while(*strDest++=*strSrc++) NULL; //NULL可以省略,但更有利于编译器发现错误 } return addr; } void *memcpy(void *dest, const void *src, int count) { ASSERT(dest!= NULL && src!= NULL); for(int i=0; i< cout; i++) { dest = src; } } int strcmp(const char*str1, const char *str2) { while (str1 != NULL && str2 != NULL) { if(*str1 < *str2) return -1; else if(*str1 > *str2) return 1; else { str1++; str2++;} } if(str1 == NULL && str2 != NULL) return -1; else if(str1 != NULL && str2 == NULL) return 1; else return 0; } //way2: more compact int strcmp(const char*str1, const char *str2) { int i = strlen( str1 ); int j; for(j=0; j<=i; j++) { if(str1[j] > str2[j]) return 1; //if str2 terminates, then str2[j]=0, str1[j]>str2[j], return 1; else if(str1[j] < str2[j]) return -1; else if(str1[j] == '') return 0; } } //way3: optimize again. int strcmp(const char * str1, const char * str2 ) { while(1) { if(*str1 > *str2) return 1; else if(*str1 < *str2) return -1; else if(*str1 == '') return 0; str1++;str2++; } } 217. 路由器A的配置如下: Quidway#SHOW RUN Current configuration ! user huawei service-无效 ppp password 0 quidway ! interface Ethernet0 ip address 1.1.1.1 255.0.0.0 ! interface Serial0 encapsulation ppp ppp authentication chap ppp chap host huawei ip address 2.1.1.1 255.0.0.0 ! interface Serial1 encapsulation ppp ! interface Serial2 flowcontrol normal async mode dedicated encapsulation ppp ! exit ip route 0.0.0.0 0.0.0.0 2.1.1.2 preference 60 end 路由器B的配置如下 Quidway#SHOW RUN Current configuration ! user hw service-无效 ppp password 0 quidway ! interface Ethernet0 ip address 3.1.1.1 255.0.0.0 ! interface Serial0 clock-select DTECLK1 encapsulation ppp ppp chap host huawei ip address 1.1.1.2 255.0.0.0 ! interface Serial1 encapsulation ppp ! interface Serial2 flowcontrol normal async mode dedicated encapsulation ppp ! exit ip route 0.0.0.0 0.0.0.0 2.1.1.2 preference 60 end 一道华为笔试题 题目:请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。 #include #include //函数havesamenum确认num是否满足条件 int havesamenum(int num) { int i=0,j; char a[10] = {0}; while(num>0) { j=num%10; a[j]+=1; num=num/10; } while(a[i]<=1&&i<10) i++; if (i<10) return 1; else return 0; } void main(void) { int i,j,m; m=(int)sqrt(99999); for(i=1;i j=i*i; if (1==havesamenum(j)) printf("%6d\",j); } } 下图为运行结果: 这个简单的面试题目,我选输出 no(对比的应该是指针地址吧),可在VC是YES 在C是NO lz的呢,是一个常量字符串。位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同 华为面试流程一共5轮 首先资格考试和面试(相应职位的资深工程师主持); 其次应聘职位的部门付经理面试 再次应 聘职位的部门付经理面试 再次人事面试 最后是付总级的面试。 常问问题: Q1:请你分别划 划OSI的七层网络结构图,和TCP/IP的五层结构图? Q2:请你详细的解释一下IP协议的定义,在哪个层上面, 主要有什么作用? TCP 与UDP呢? Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次 上面实现的? Q4:请问C++的类和C里面的struct有什么区别? Q5:请讲一讲析构函数和虚函数的用法和作用? Q6:全局变量和局部变量有什么区别?实怎么实现的?操 作系统和编译器是怎么知 道的? Q7:一些寄存器的题目,主要是寻址和内存管理等一些知识。 Q8:8086是多少位的系统?在数据总线上是怎么实现的? 测试题: 1、由于你是新员工,没有公配手机时,当你在现场遇到紧急事故时,你会()向公司求助 A、打用户机房内的电话 B、借用户手机 C、拔110 D、拔200或300 E、立即打车回办事处 (答案:D,答CE者立即辞退,按照公司规定,不能随便使用用户的电话,以提高公司 形象) 2、工程师A 某周日晚正在家里看电视,突然手机响了,电信局运维员工突然 打电话过来,小A接起电话,用户声音很急迫,说:“不好了,瘫了,你快来处理”。 请问这里“瘫了”最有可能是什么意思() A、设备漏电将维护人员电瘫了 B、设备支架不够结实,被压瘫了 C、设备坏了,将维护人员吓瘫了 D、设备坏了,大面积业务中断了 (答案:D,答错者,按不合格处理) Network: 1. 如何设计一个模型来检验通信协议的正确性? 2. 位于网络两端的计算机的 连接过程是怎样的? 3. 链路层的协议? 4. FSM和PETRI网哪个好 5. 中国一 号和七号信令的区别。 Hardware: 6. CPU里面有些什么东东,外面有些什么东东? 7. 指令执行分几个步骤 Languge and Compiler: 9. i = 0, 那么, ++i||i-- 的值? 8. c c++ java的区别? 9. 全局变量、局部变量、静态变量都放在内存的什么地方? 10. 结构与类的区别 11. a*b+c 这样的表达式如何写编译程序? 12 c++虚函数怎么实现 Data structure and Algorthim 13. 写出一个二分函数? 14. 写出一个字符串子串匹配的算法? 15 对一个一维数组排序 Software System: 16. UNIX文件系统的最大优点是什么? 17. fork函数的返回值是? 18.(软件)测试有 哪几种方法? Database 19. 数据库编程哪部分最重要? 20. 未来的数据库(电子信 息数据库)的走向? 21. 数据库第一范式怎么表示 慧通试题 1 写出程序把一个链表中的接点顺序倒排 typedef struct linknode { int data; struct linknode *next; }node; //将一个链表逆置 node *reverse(node *head) { node *p,*q,*r; p=head; q=p->next; while(q!=NULL) { r=q->next; q->next=p; p=q; q=r; } head->next=NULL; head=p; return head; } 2 写出程序删除链表中的所有接点 void del_all(node *head) { node *p; while(head!=NULL) { p=head->next; free(head); head=p; } cout<<"释放空间成功!"< 3两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串 void insert(char *s, char *t, int i) { char *q = t; char *p =s; if(q == NULL)return; while(*p!='\\0') { p++; } while(*q!=0) { *p=*q; p++; q++; } *p = '\\0'; } 分析下面的代码: char *a = "hello"; char *b = "hello"; if(a= =b) printf("YES"); else printf("NO");
