关闭

笔试——2015BAT实习招聘

1256人阅读 评论(2) 收藏 举报
分类:

以下关于STL的描述中,__是错的。
STL容器是线程不安全的 ✔
当容量不够时,vector内部内存扩展方式是翻倍 ✔ 《C++ primer》P320
std::string中可以存储多个’\0’字符 ✔
std::bitset不是一个STL容器 ✔
std::stack是用deque实现的 ✔
std::sort可能是不稳定排序
————————————————————————————————————————————————————————
【解释:std::string中可以存储多个’\0’字符】
string提供很多字符串操作函数,只有在单参数函数中,才将char *字符’\0’当作字符串结尾符。其它所有情况下,’\0’都不被视为特殊字符。

    std::string s1("nico"); // initializes s1 with: 'n' 'i' 'c' 'o'
    std::string s2("nico", 5); // initializes s1 with: 'n' 'i' 'c' 'o' '\0'
    std::string s3(5, '\0'); // initializes s1 with: '\0' '\0' '\0' '\0' '\0'
    s1.length() // yields 4
    s2.length() // yields 5
    s3.length() // yields 5

‘\0’在string中并不具有特殊含义,它只是在一般c风格字符串中用来表示字符串结尾。在std::string中,’\0’和其它字符地位相同。

    string  s="abc";

s只包含’a’ ‘b’ ‘c’,调用的是单参数赋值操作符,不包含\0,string并不以’\0‘来标记字符串结尾。
如果string 实例存储的是 “a\0b”, 那么 size 值为 3。
但是如果使用 c_str() 方法调用会返回string 分配内存的起始地址,这时对该指针当做一般的C指针,也就是C风格的字符串。例如:

    string str1 = "a";
    str1+='\0';
    str1+="b";
    cout << str1.c_str() << endl;  //output: a

    //str1.length() == 3
    for(int i=0; i<str1.length(); i++)  
    {
        cout << str1[i];   //output: a b
    }

————————————————————————————————————————————————————————

以下程序输出是__

#include <iostream>
using namespace std;
int main(void)
{
    const int a = 10;
    int * p = (int *)(&a);
    *p = 20;
    cout<<"a = "<<a<<", *p = "<<*p<<endl;
    return 0;
}

编译阶段报错
运行阶段报错
a = 10, *p = 10
a = 20, *p = 20
a = 10, *p = 20 ✔
a = 20, *p = 10

订单表orders的表结构如下,要统计出每日付款订单笔数、付款金额(单位:元)、付款人数、客单价(单位:元,客单价的定义是销售总额÷买家总数)以及单笔最高金额(单位:元),下面SQL语句正确的是__
  SELECT buyer_date,_,_,_,_,__
  FROM orders __ buyer_date
count(*), sum(pay_amount), count(buyer_id), sum(pay_amount)/count(buyer_id), min(pay_amount), group by
count(1), sum(pay_amount)/100, count(distinct buyer_id), sum(pay_amount)/count(distinct buyer_id)/100, max(pay_amount)/100, group by
count(order_no), sum(pay_amount)/100, count(buyer_id), sum(pay_amount)/count(buyer_id)/100, max(pay_amount)/100, group by
count(buyer_id), sum(pay_amount)/100, count(distinct buyer_id), avg(pay_amount)/100, max(pay_amount)/100, group by
count(seller_id), sum(pay_a

下面代码在64位Linux系统编译执行,输出结果是__

#include <stdint.h>
#include <stdio.h>
void print_size(int32_t array[10]){
       printf("%d\n", sizeof(array));
}
int main () {
        int32_t myArray[10];
        printf("%d ", sizeof(myArray));
        print_size(myArray);
}

20 4
40 4
80 4 ✔
40 8
80 8
以上均不正确

假设支付宝红包口令支持1到6位的数字组合,即’0’、’1’、’003’和’999999’都是合法的红包口令,那么总共可以有多少个合法的红包口令__
999999
1000000
1010100
1010101
1111110
1111111

假设一棵二叉查找树有5个不同的键,已知在查找时出现了最坏的情况(即查找某个键时,需要遍历树上的所有节点),那么符合条件的二叉查找树共有__种形态。
1
2 ✔
4
6
8
16

红黑树的定义如下:一颗二叉查找树如果满足下面的红黑性质,则为一棵红黑树:
1)每个节点只能是红色或者黑色之一
2)根节点是黑色
3)每个叶节点是黑色
4)如果一个节点是红色,则它的两个子节点都是黑色
5)对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点

对于一棵有n个内节点的红黑树,下面描述错误的是__
从任意节点出发的所有下降路径都有相同的黑节点个数
从任意节点出发的所有下降路径都有相同的红节点个数
该树的高度不超过2log(n+1)
从某节点到其后代叶节点的所有简单路径中,最长的一条是最短一条的至多两倍
从根到叶节点(不包含根)的任一条简单路径上至少有一半的节点必是黑色的
在红黑树上的查找操作可以在O(logn)时间内完成

用UC浏览器打开Tmall,一定不会用到的网络协议是__
DNS
TCP
IP
ARP
ICMP
FTP

用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有__个0。
6
8
10
12
14
16

假设某处理器有64个核心,它们可以并行运行,且可以无竞争地访问一个储存器。任意一个核心对存储器中的两个数据进行求和并将结果存入存储器中需要时间 t。现在有一个长度为32的数组。我们使用这个处理器求出数组中所有元素的总和,请问最少需要_时间。
3t
5t
6t
8t
16t
31t

一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备_组电池,可以让模型每次行驶完可以立即换电池行驶不用等待。一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备_组电池,可以让模型每次行驶完可以立即换电池行驶不用等待。
1
2
3
4
5
6

已知某二叉树的前序遍历为’DFBEHACG’,中序遍历为’BFEDHCAG’,则后序遍历为__
BEFCAGHD
BEFDCGAH
BEFCGAHD
FEBCAGHD
FEBDCGAH
FEBCGAHD

在网络传输数据时,经常需要将二进制数据转换为一个可打印字符串。一般用到的可打印字符集合包含64个字符,因此又称为Base64表示法。现有一个char数组长度为12,要将它表示为Base64字符串,请问Base64字符串最少需要_个char;如果char数组长度为20,则需要_个char。
9,15
9,16
16,24
16,28
18,30
18,32

小明在玩一个扔骰子游戏,每次扔出会随机等概率得到1到6的点数,现在他开始扔骰子,并把每次得到的点数累加(从0开始),如果某一次他扔完之后的累加和恰好为2015则为成功,越过2015为失败(即某次从小于2015的某个数加完后变为大于2015的某个数),小明成功的概率约为__
1/2
2/7
1/6
3/8
1/5
7/9

下列Java代码中的变量a、b、c分别在内存的__存储区存放。
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
堆区、堆区、堆区
堆区、栈区、堆区
堆区、栈区、栈区
堆区、堆区、栈区
静态区、栈区、堆区
静态区、栈区、栈区

阿里巴巴某部门年会的时候,有个环节叫做《国王和天使》。每个人将自己的名字写在纸条上并丢入盒子中,等所有人都完成该动作后,每个人再从盒子里拿一张小纸条,上面的人物就是自己的国王,自己就是ta的天使,如果抽到是自己,则重抽一遍,直到抽到别人为止。然后大家为小纸条上的伙伴准备一份精心的礼物,如果用有向图表示他们之间的关系,那么以下结论错误的是__
最后的结果可能存在多个联通分支
联通分支个数最多不超过人数的二分之一
最后的结果可能存在多个强联通分支
可以使用深度优先算法求得联通数
可以用双向链表存储其结构
遍历的复杂度是O(n)

图中每个圆圈是一个补给站,存储着一定数量的汽油(在圈中标识),每个圈之间的路上标识了这段路需要消耗的汽油量,一辆小车从A点出发,在图上随意行走,到达某个补给站后,可以获得这个补给站的所有汽油,则其到B点后最多剩余的汽油量是__

4
5
6
7
8
9

给定一个整数sum,从有N个无序元素的数组中寻找元素a、b、c、d,使得 a+b+c+d =sum,最快的平均时间复杂度是__
O(N^2)
O(log N)
O(N)
O(N^3)
O(N^2LogN)
O(N^4)

用一个整形数组实现一个有固定上界为100个的堆栈,实现push,pop,size方法并编写代码对堆栈进行功能测试,语言使用Java,C#或C++均可

一个有generic的固定上界的堆栈,class Stack {…}, 有push,pop,size方法。编写测试程序,并编写一个测试数据生成器,能够为测试这个堆栈生成所需的测试数据。

定义broad match,一个词组的单词如果是另一个词组单词的子集,就认为是个borad match,例如对于 “a b c”,”a”, “b c” “c a” “a b c”都匹配,而 “a d”不匹配。现有一个搜索匹配模块,输入为用户的查询来匹配一个词组字典,找到字典中所有可以和输入broad match的词组,输出预定的词组整型序号。例如”cheap iphone in china”,字典中有 1. “cheap iphone”, 2. “cheap mobile”, 3 “china iphone”,则1和3匹配。设计性能测试报告(语言描述)以完整描述述被测模块的性能,例如但不限于 “性能曲线y反映查询速度相对x变化,其他不变时的查询速度,x单位为Ux,y单位为Uy”

堆排序的过程:
建堆(从第一个非叶子结点开始) -> 输出堆顶元素 -> 调整堆(从堆顶往下调)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31895次
    • 积分:2439
    • 等级:
    • 排名:第15751名
    • 原创:64篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论