最近找实习,感觉收获还是蛮多的。真正体会到了学校与工作的不同,而这样的面试经历,让我有了许多压力,也有很多动力,把每次面试的题写下来,做一做,也算是查漏补缺吧。
百度质量部篇
1.字符逆序
2.自我介绍
3.讲一个自己做过的项目
4.不用中间变量,将a与b交换值
a=a^b
b=a^b
a=a^b
5.数组与链表有什么区别?什么时候用哪一个比较好
数组便于查询某一个位置上的节点,而链表便于插入和删除操作。另外,在内存的分配中,数组需要一块连续的地址,而链表中的节点不一定非要放在一起,因此链表可以充分地利用空间。
6. string结构是怎么存储的?数组还是链表?
串是采用链式存储结构的,一个节点可以存储一个到多个字符
7.如果一个论坛发表评论,你觉得有什么可以测试的地方么?
--文本框的编辑测试:包括字体、颜色、表情等设置有没有效果;输入字数有没有限制,如果超出了这样的限制能不能操作成功;可不可以上传文件;输入特殊字符、中英文有没有区别;点击提交按钮,能否成功提交;有没有验证码,验证码不清晰可不可以换一张;
--权限设置:根据权限测试是否有发帖权限;是否有删除权限;发帖完毕后什么权限可以修改;什么权限可以删除;
--测试发帖成功后,发帖人的信息记录是否正确;日期是否正确;发帖ip是否有限制
--兼容测试:在各种配置不同的操作系统上和分辨率不同的电脑上及使用不同的浏览器对其测试,看其是否可以正确显示,是否有图片和页面错位和太大太小等问题使有的部分无法看到,是否有图片或视频无法显示。
--负载测试:多个用户同时上网,看其最大的承受能力是多大,如果超过了这个极限会有何反应
--压力测试:看看几百,几千甚至几万个人同时发帖还能成功不,运行速度会有怎样的变化,是否响应时间太长或运行过慢,他到啥时候会崩溃。
--性能测试:看看发帖需要多长时间的响应速度
8.为什么来面质量部?
9.shell中会不会使用脚本?
10.shell中的几个命令:
wc: 统计信息 例如文件行数等
top:查看系统CPU、内存使用状况
ps:显示进程信息 df:查看磁盘占用情况 grep awk:擅长格式化报文,或从一个大的文本文件中抽取数据包
重定向标准出错 &>word
11. 数组指针与指针数组的区别。
数组指针(也称行指针)定义 int (*p)[n]; 指针数组 定义 int *p[n]; p先与n结合 int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
好吧,多天后进入了二面:
1. 自我介绍
2. 做过什么项目
3. 一个网页让你测试怎么测试
4. linux命令
5. 如果让你设计电梯,应该怎么设计
6. 如果让你测试电梯,应该怎么做
三面:
1. 做过什么项目的介绍
2. 如果有一个自动售货机,怎么测试
3. 两个杯子,一个里面装满了糖,另一个装满了盐,有人从糖里面舀了一勺放在盐里搅匀,又从盐里舀了一勺放在糖里,问现在是糖里的盐多,还是盐里的糖多?
4.下面这个程序的输出是什么?(把9999用二进制表示,有多少个1最后的count值就是多少)
int fun()
{
int x =9999;
int count = 0;
while(x!=0)
{
x=x&(x-1);
count++;
}
return count;
}
5. 剩下的就基本是看看简历上有什么就问什么了。
比如网络的tcp连接过程,udp连接过程,数据库操作
特艺实习笔试
记得的不多了,稍微写点
char *p[100] sizeof(p) = ? 100 (如果是char (*p)[100] sizeof(p) = 4)
找错
1、char* str="12345678";
char str1[8];
strcpy(str1, str);
没找到错,可能的是str1应该为9,否则会丢失‘\0’的信息
2、char* fun()
{
char sz[100];
return sz;
}
使用sz[100]分配的空间属于函数的内部变量,函数调用结束后系统会收回这些内存,因而这里应该使用char* sz = new char[100],动态分配。
最后的编程题:
1.编写一个函数计算一个字符串中的重复字符,输出重复字符及重复的次数。
int Count()
{
char* htt="abcdefasdfakjdshwefad";
char t[26] = {0};
int i = 0;
while (i < strlen(htt))
{
t[ htt[i] - 'a' ]++;
i++;
}
i = 0;
while (i < 26)
{
if (t[i] > 1)
{
cout<<(char)(i + 'a')<<"重复:"<<(int)t[i]<<endl;
}
i++;
}
return 0;
}
2.编写一个函数把两个按照降序排列的链表合并并且按照升序排列
struct list
{
int data;
list* next;
};
list* merge(list* list1_head, list* list2_head)
{
list* temp;
list* index = NULL;
while (list1_head!=NULL && list2_head!=NULL)
{
if (list1_head->data >= list2_head->data)
{
temp = list1_head->next;
list1_head->next = index;
index = list1_head;
list1_head = temp;
}else
{
temp = list2_head->next;
list2_head->next = index;
index = list2_head;
list2_head = temp;
}
}
if (list1_head!=NULL)
{
while(list1_head != NULL)
{
temp = list1_head->next;
list1_head->next = index;
index = list1_head;
list1_head = temp;
}
}else if (list2_head!=NULL)
{
temp = list2_head->next;
list2_head->next = index;
index = list2_head;
list2_head = temp;
}
return index;
}