笔试面试题—软件测试工程师面试秘籍(6)

发表于:2014-11-14 11:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:G.li    来源:51Testing软件测试网原创

(51Testing软件测试网获得作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  试题17.有一份成绩单,只有两个字段:姓名、成绩;数据量在百万级别。要求用最优的数据存储方式,能通过姓名快速查找出成绩。
  答案:存储方式采用对姓名做hash。
  试题18.快速排序的平均时间复杂度是多少?最坏时间复杂度是多少?在哪些情况下会遇到最坏的时间复杂度?
  分析:考察考生对排序算法的了解。
  参考答案:快速排序时间复杂度为O(nlogn),最坏时间复杂度是O(n2),在待排序列正序或者逆序的情况下会出现最坏时间复杂度。
  试题19.请用任意你熟悉的语言实现一个冒泡算法,并写出它的时间复杂度。
  分析:考察基本算法知识。
  参考答案:见本章2.1.5。
  试题20.栈和队列的共同特点是什么?
  分析:考察栈和队列的概念。
  答案:栈和队列都只能在端点处插入和删除元素。
  试题21.栈通常采用的两种存储结构是什么?
  分析:栈属于线性表的一种,线性表存储结构有两种。
  答案:顺序存储和链表存储。
  试题22.下列关于栈的叙述正确的是(    )。
  A栈是非线性结构 B栈是一种树状结构
  C栈具有先进先出的特征 D栈具有后进先出的特征
  分析:考察栈的概念。
  答案:D。
  试题23.链表不具有的特点是(    )。
  A不必实现估计存储空间 B可随机访问任一元素
  C插入和删除不需要移动元素 D所需空间与线性表长度成正比
  分析:该题考察链表的特点,B属于顺序存储结构的特点。
  答案:B。
  试题24.链表的优点是什么?
  分析:考察链表的特点。
  答案:便于插入和删除操作;动态申请空间。
  试题25.线性表若采用链式存储,要求内存中可用的存储单元地址(    )。
  A连续 B部分地址连续 C一定不连续 D连续不连续都可以
  分析:考察链表的特点。
  答案:D。
  试题26.在深度为5的满二叉树中,叶子结点的个数是多少?
  分析:考察二叉树的特性以及满二叉树的概念。满二叉树叶子结点的个数为 。注意别计算成完全二叉树。
  答案:31。
  试题27.已知,二叉树后根遍历结果是dabec,中根遍历结果是debac,它的前根遍历结果是什么?
  分析:考察二叉树的遍历方式,2.1.3中有讲解,先画出树来,再遍历。
  答案:cedba。
  试题28.已知,二叉树前根和中根遍历结果分别是ABDEGCFH和DBGEACHF,则该二叉树的后根遍历结果是什么?
  分析:同试题27。
  答案:DGEBHFCA。
  试题29.串的长度定义是什么?
  分析:考察串的概念。
  答案:串中所包含的的字符个数。
  试题30.判断两个数组中是否存在相同的数字,给定两个排好序的数组,怎样高效判断这两组数中有相同的数字?
  分析:这个问题首先想到的是O(nlog2n)的算法。任意挑选一个数组,遍历这个数组的所有元素。在遍历过程中,在另一个数组中对第一个数组中的每个元素进行binary search。还有一个O(n)算法。因为两个数组都是排好序的,所以只需要遍历一次就行了。
  答案:首先,设置两个下标,分别初始化为两个数组的起始地址,依次向前推进。推进的规则是比较两个数组中的数字,小的数组的下标向前推进一步,直到任何一个数组的下标到达数组末尾时,若还没有碰到相同的数字,说明数组中没有相同的数字。
  试题31.在需要经常查找结点的前驱和后继的场合中,使用(    )比较合适。
  A单链表 B双链表 C顺序链表 D循环链表
  分析:考察链表的运用。
  答案:B。
  试题32.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数是多少?
  分析:考察查找算法的熟练程度
  答案:最坏比较N次。
  试题33.最简单的交换排序方法是什么?
  答案:冒泡排序。
  试题34.线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数是多少?
  分析:考察对冒泡排序的熟练程度。
  答案:n(n-1)/2。
  试题35.在待排序元素基本有序的前提下,效率最高的排序方法是什么?
  答案:冒泡排序。
  试题36.在最坏情况下,排序方法中时间复杂度最小的是什么?
  答案:堆排序。
  试题37.堆排序法属于什么?
  答案:选择类排序。
  试题38.对于输入为N个数进行快速排序算法的平均时间复杂度是多少?
  分析:见本章2.1.5中表2.1。
  答案:O(Nlog2N)
  试题39.整数转换成字符串。
  分析:本章2.1.2中有算法描述。
  答案:
  1./*整数转化成字符串*/
  2.char *IntToStr(int num, char str[])
  3.{
  4.    int i = 0, j = 0;
  5.    char temp[100];
  6.    while(num)
  7.    {
  8.        temp[i] = num % 10 + '0';   //取模运算得到从后往前的每一个数字变成字符
  9.        num = num / 10;
  10.        i++;
  11.    }
  12.    temp[i] = 0;    //字符串结束标志
  13.
  14.    i = i - 1;     //回到temp最后一个有意义的数字
  15.    while(i >= 0)
  16.    {
  17.        str[j] = temp[i];
  18.        i--;
  19.        j++;
  20.    }
  21.    str[j] = 0;   //字符串结束标志
  22.    return str;
  23.}
  试题40.将字符串转化成整数。
  分析:本章2.1.2中有算法描述。
  答案:
  1./*字符串转换为整数,仅考虑十进制,不考虑非法字符*/
  2.int StrToInt(char *str)
  3.{
  4.    int value = 0;
  5.    int sign = 1;
  6.    assert(str != NULL);
  7.    if(*str == '-')
  8.    {
  9.         sign = -1;
  10.        str++;
  11.    }else if(*str == '+')
  12.    {
  13.        str++;
  14.    }
  15.    while(*str)
  16.    {
  17.        value = value * 10 +(*str - '0');
  18.        str++;
  19.
  20.    }
  21.    return sign * value;
  22.}
  试题41.在不借助第三个变量的情况下,把两个int的变量X、Y的值互换,用任何自己熟悉的编程语言完成。
  参考答案:思路为X=X+Y,Y=X-Y,X=X-Y。
本文选自《软件测试工程师面试秘籍》,本站经作者的授权。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关文章:
排序和时间复杂度—软件测试工程师面试秘籍(5)
44/4<1234
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • zaza9084
    2014-11-20 17:08:59

    这是《软件测试工程师面试秘籍》书中某一个章节的节选~不是所有的部分,可能给你们造成了困惑,不好意思~

  • huipeng
    2014-11-17 14:30:36

    开玩笑,这是开发的题

  • 幸福的木子端
    2014-11-17 10:33:34

    你是来当逗b的么 同学

  • 威武大将军朱寿
    2014-11-14 14:13:24

    这是软件测试工程师面试题?这是C的,您别逗了

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号