【今日头条】测试工程师面试题
第一套
答案整理如下:
算法题
二叉树遍历
思路
遍历,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。
分为递归算法、非递归算法
递归算法又分为:先序遍历、中序遍历、后序遍历
递归算法
//输出 void Visit(BiTree T){ if(T->data != '#'){ printf("%c ",T->data); } } //先序遍历 void PreOrder(BiTree T){ if(T != NULL){ //访问根节点 Visit(T); //访问左子结点 PreOrder(T->lchild); //访问右子结点 PreOrder(T->rchild); } } //中序遍历 void InOrder(BiTree T){ if(T != NULL){ //访问左子结点 InOrder(T->lchild); //访问根节点 Visit(T); //访问右子结点 InOrder(T->rchild); } } //后序遍历 void PostOrder(BiTree T){ if(T != NULL){ //访问左子结点 PostOrder(T->lchild); //访问右子结点 PostOrder(T->rchild); //访问根节点 Visit(T); } }
非递归算法比较复杂,每一级都需要循环所有孩子节点
参考资料:http://blog.csdn.net/sjf0115/article/details/8645991
判断IP合法性
思路:
IP地址:由 . 分割的四组数字,每个数字的范围是 0 - 255
使用正则表达式,网上搜到IP的正则表达式为
((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
java实现代码
public class isIP { public static void main(String[] args) throws Exception { String ip = "172.16.11.14"; String regex = "((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))"; if (ip.matches(regex)) { System.out.println("合法"); }else { System.out.println("非法"); } } }
参考资料:http://www.cnblogs.com/txw1958/archive/2011/10/13/2210114.html
测试设计题
朋友对状态点赞
1.是否可以正常点赞和取消; 2.点赞的人是否在可见分组里; 3.点赞状态是否能即时更新显示; 4.点赞状态,共同好友是否可见; 5.不同手机,系统显示界面如何; 6.性能检测,网速快慢对其影响; 7.点赞显示的是否正确,一行几个; 8.点赞是否按时间进行排序,头像对应的是否正确; 9.是否能在消息列表中显示点赞人的昵称、备注; 10.可扩展性测试,点赞后是否能发表评论; 11.是否在未登录时可查看被点赞的信息。
参考资料:http://blog.csdn.net/maomaomao425/article/details/61208586
varchar(512)升级到varchar(1024)后测试
varchar
mysql中varchar存储的中文字符、英文字符、数字,是一致的,varchar(512)能存储512和汉字或者数字或者字母;
sql server中varchar存储汉字不同,一个汉字占两个字符;
针对能存储的汉子和字母数字字符数,进行不同内容长度的测试;
系统测试题
多线程安全日志库
使用以下代码测试打印出来的日志序号是否顺序
for(int i = 0; i <= 100; i++){ Thread t = new Thread(new MultithreadingLog("JOB" + i)); t.start(); }
IM系统测试
登录
注册
好友管理:增删改好友
消息收发:消息发送接收
安全:本地密码保存加密、消息网络通讯加密
参考资料:https://wenku.baidu.com/view/4c4e9f17866fb84ae45c8d3e.html
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二套
字符串拼接函数
C语言
char* strconcat(char * pCh1, char * pCh2) { char *result = (char *) malloc(strlen(apCh1) + strlen(pCh2) + 1); //局部变量,用malloc申请内存 if (result == NULL) exit (1); char *tempc = result; //把首地址存下来 while (*pCh1 != '\0') { *result++ = *pCh1++; } while ((*result++ = *pCh2++) != '\0') { ; } //注意,此时指针c已经指向拼接之后的字符串的结尾'\0' ! return tempc;//返回值是局部malloc申请的指针变量,需在函数调用结束后free之 }
参考资料:http://blog.csdn.net/wusuopubupt/article/details/17284423
有序单向链表反转
LinkedList ReverseSinglyLinkedList(LinkedList list) { LinkedList newList; //新链表的头结点 LNode *tmp; //指向list的第一个结点,也就是要摘除的结点 // //参数为空或者内存分配失败则返回NULL // if (list == NULL || (newList = (LinkedList)malloc(sizeof(LNode))) == NULL) { return NULL; } // //初始化newList // newList->data = list->data; newList->next = NULL; // //依次将list的第一个结点放到newList的第一个结点位置 // while (list->next != NULL) { tmp = newList->next; //保存newList中的后续结点 newList->next = list->next; //将list的第一个结点放到newList中 list->next = list->next->next; //从list中摘除这个结点 newList->next->next = tmp; //恢复newList中后续结点的指针 } // //原头结点应该释放掉,并返回新头结点的指针 // free(list); return newList; }
参考资料:http://yiluohuanghun.blog.51cto.com/3407300/1305094/
strconcat测试用例
手机app发帖子测试点
功能点测试
流程测试
交叉测试,来电、短信等app进入后台
内存不足测试
编辑过程中应用切换测试
重复提交测试
升级HTTPS测试
???
其他几个题目暂时没有查到相关答案,欢迎大家补充说明。