腾讯模拟考20180831研发

 对于下面的答案,只是我自己的想法。不一定对,还有好多我没查到的,没给出答案。如果知道答案的,可评论,我会修改

1、以下哪些可以提升网络后台系统性能

A、数据库单独部署       B、负载均衡部署           C、增加缓存           D、增加备份设备

2、下面哪些方法可以提高系统对请求的并发处理能力

A、使用select/epollIO复用技术处理网络请求

B、对下行消息或者请求的回复消息进行包合并处理

C、发送消息之前对网络数据进行压缩

D、在系统和mysql之间增加dbproxy,把发往mysql的同步请求转为异步处理

 3  数据库表:user

         字段:nameagesex

         索引1age

         索引1agesex

         查询:年龄在20~30之间的用户数。

         以下哪种查询可能是正确的?

A、select count(1) as cnt from user where age>=20 and age<=30

B、select count(age) from user where age between 20 and 30

C、select count(1) from user where age>=20 and age<=30 and sex is not null

D、select sum(age) from user where age>=20 and age<=30

 4、假设有4台机器,它们之间的网络延迟小于1毫秒,及其之间的带宽是每秒10MB,现在其中一台机器上有数据大小为1GB的数据库,如果想把这台机器上的数据库备份到其他三台机器上(使每台机器都有完整的数据备份),最快大概需要多少时间(不考虑压缩)

A300       B200       C150       D100

 5、以下程序的输出是        

var a = 1;
function funcA(){
    alert(a);
    var a = 2;
}
funcA()

 Aundefined 1       Bundefined 2       C1 1                       D1 2

 6、在C++中,有类型Foo声明如下

class Foo{         
Public:                 
    virtual void func1(){}     
    void func2(){}     
    int data1;         
    static int data2;    
};
int Foo::data2 = 1;

现有如下代码

Foo *p_foo = (Foo*)malloc(sizeof(Foo));

不考虑内存分配失败的情况,以下哪些语句会引起程序异常

Ap_foo->func1();          Bp_foo->func2();          Cp_foo->data1 = 1;          Dp_foo->data2 = 1;

 答案:A

A:虚函数必须要定义函数体,不加函数体的话要=0定义成纯虚函数

B:正常的函数,可以调用

C:成员变量,可调用

D:静态成员变量,为所有成员共享,当然可以赋值。因为前面已经初始化过了,没问题。

7、下列代码输出为啥

void Test( int Array[], int size ){
    int Num = sizeof(Array)/sizeof(int);
    for( int i = 0; i<Num && i<size; ++i )
	printf( "%d ", Array[i] );
}
int main(){
    int Array[] = {1,2,3,4};
    Test( Array, sizeof(Array)/sizeof(int));
    return 0;
}

A、1          B、1 2           C、1 2 3          D、1 2 3 4

答案:A

Array[]作为函数参数的时候,其实传入的是一个int*的指针,故Num = 1;

所以只会输出1 

8、下列代码可能的输出为啥

union U{
    char* a;
    char b;
};
struct S{
    char *a;
    char b;
};
union U2{
    S s;
    U u;
};
printf("%zu, ", sizeof(U));
printf("%zu, ", sizeof(S));
printf("%zu, ", sizeof(U2));
printf("%zu, ", sizeof(std::array<char, 2>));
printf("%zu, ", sizeof(char[2]));
printf("%zu",   sizeof(char*));

A、4 5 5 8 2 4          B、4 8 8 8 2 4         C、 4 5 5 2 3 4          D、8 16 16 2 2 8

答案:B

U为联合体,所有变量共享存储单元,char*为4字节,char为1字节,故4

S为结构体,为保持字节对齐,故8

U2联合体,同理,S为8字节,U为4字节,故8

std::array<char,2> 按道理为2才对

char[2] 为2字节

char*为4字节

 9、x86-64机器上,下面代码的打印是什么

char* string 1 = “tencent2018”;
int size1 = sizeof(string1);
int size2 = sizeof(*string2);
char string2[100] = “tencent2018”;
int size3 = sizeof(string2);
printf(“%d, %d, %d”, size1, size2, size3 );

A8,1,100      B、 8,12,100       C、 12,1,12         D、 12,12,12 

答案:A

sizeof(string1)求的是指针的大小,64位系统为8

sizeof(*string1)求的是string1指向的't'的大小,为1

sizeof(string2)求数组的大小,为100。若用strlen(string2),长度则为12 

10、以下代码,当输入是2018时,函数的返回值为

int func( int n ){
    if(n>0)
	return n+func(n-1);
    else
	return 0;
}

A、 2035153       B、 2037171       C、 2036162       D、 2034144

答案:B

求的其实是2018!阶乘。手算肯定来不及。

可以10为单位进行计算,1+2+3+4+5+6+7+8+9+10=55,最后一位为5。所以1+...+20=..0。

故1+...+2010=...5,5+1+2+3+4+5+6+7+8=...1。故选B 

 11、若数据元素序列1112137892345是采用下列排序方法之一得到的第二趟排序后的结果

A、冒泡排序          B、插入排序          C、选择排序          D、归并排序

答案:B

冒泡每次可选最大的一个数放到序列尾部

选择每次可选最大的一个数放到序列头部

归并第一次应该出现两两成序列,第二趟则四四成序列

两趟插入后,有三个数字排成序列,对的。 

 12、以下关于二叉树的描述错误的是

A、二叉树可以用数组进行存储,此时节点索引为i的父节点(如果存在)的索引可以用i/2向下取整获得

B、二叉树的前序序列和中序序列存在相同的可能性

C、在二叉树的非递归深度优先遍历中,我们需要记下每个待访问的点,而非递归的广度优先遍历则不需要

D、二叉查找树的最差查找时间为O(n),但通常可以达到O(logn)

答案为:A

A:要看下标从0还是从1开始,从0开始,则i的父节点为(i-1)/2 下取整;从1开始,则i的父节点为i/2下取整

B:当只存在右子树时,前序和中序相同

C:非递归深度优先遍历,可用栈记录下每个待访问的点,以便后续使用。非递归广度优先遍历则使用队列

D:二叉查找树最差的时候,只有一个子树,一直遍历到底,为O(n)。正常情况下,基本平衡是,可达到O(logn)

 13、两种常用的稀疏矩阵压缩存储方式是

A、三元组和散列           B、二维数组和三维数组          C、散列和十字链表          D、三元组和十字链表

答案:D 

 14、设栈S和队列Q的初始状态均为空,元素abcdefg以此进入栈S。若每个元素出栈后立即进入队列Q,但7个元素出队的顺序是bdcfeag,则栈S的容量可能是

A1        B2        C3        D4

 答案:C、D

a入栈,此时栈内为a;b入栈,栈内ab;b出栈入队列,栈内a;c入栈,栈内ac;d入栈,栈内acd;bc先后出栈入队列,栈内a;ef先后入栈,栈内aef;fea先后出栈入队列,栈空;最后g先入栈后出栈。

从这个流程可以看出,只要栈至少能容纳3个元素即可。故选C、D

 编程题一题

QX首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法。

输入描述:

每个输入包含一个测试用例

每个测试的第一行包含一个整数,表示歌单的总长度K1<=K<=1000.

接下来的一行包含四个正整数,分别表示歌的第一种长度AA<=10)和数量XX<=100)以及歌的第二种长度BB<=10)和数 YY<=100.保证A不等于B

输出描述: 输出一个整数,表示组成歌单的方法取模。因为答案可能会很大,输出对1000000007取模的结果

输入示例:

    5

    2 3 3 3

输出示例:

    9

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值