zoukankan      html  css  js  c++  java
  • 【今日头条】测试工程师面试题

    第一套

    答案整理如下:

    算法题
    二叉树遍历
    思路
    遍历,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。
    分为递归算法、非递归算法
    递归算法又分为:先序遍历、中序遍历、后序遍历

    递归算法

    //输出
    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|((1d{2})|([1-9]?d))).){3}(?:25[0-5]|2[0-4]d|((1d{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 != '') {  
            *result++ = *pCh1++;  
        }  
        while ((*result++ = *pCh2++) != '') {  
            ;  
        }  
        //注意,此时指针c已经指向拼接之后的字符串的结尾'' !  
        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测试

     ???

    其他几个题目暂时没有查到相关答案,欢迎大家补充说明。

  • 相关阅读:
    二分图最大匹配
    Problems about trees
    Hackerrank Going to the Office
    多校题解
    HDU #2966 In case of failure
    K-D Tree
    UOJ #10 pyx的难题
    bzoj 1090 字符串折叠
    uva 1347 旅行
    bzoj 1059 矩阵游戏
  • 原文地址:https://www.cnblogs.com/jhli/p/7128503.html
Copyright © 2011-2022 走看看