BIGO 2019实习生招聘笔试题-客户端A卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BIGO 2019春季实习生招聘笔试题(北京番薯-客户端实习生)
共8页,总分100分,笔试时间90分钟。
一.不定项选择题(每空2分,共50分)
( )1. 进程和线程是操作系统中最基本的概念,下列有关描述错误的是____
A.进程是程序的一次执行,而线程可以理解为程序中运行的一个片段
B.同一个进程的一组线程共享该进程的资源,线程之间可以互相通信
C.线程之间的通信简单(共享内存即可,但须注意互斥访问的问题),而不同进程之间的通信更
为复杂,通常需要调用内核实现
D.线程是资源分配和拥有的单位
( )2. 关于操作系统,下列描述当中,错误的是____
A.进程间的基本关系为同步与互斥
B.并发性是指若干事件在同一时间内间隔内发生
C.如果某一进程在运行时,因某种原因暂停,此时将脱离运行状态,而进入自由状态
D.产生死锁的必要条件:互斥条件,请求与保持条件,不剥夺条件以及循环等待条件
E.进程的特性包括:动态性,并发性以及异步性
( )3. 在位运算中,操作数每左移一位,其结果相当于____
A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
( )4. 以下指针声明中,哪些是p指向的内容不可修改____
A.char * const p;
B.char const * p;
C.char const * const p;
D.const char * const p;
( ) ( ) ( )5. 在32位系统下,有以下语句:
char str[] = "abc";
char *p = str;
int n = 10;
请计算sizeof(str) = ____,sizeof(p) = ____,sizeof(n) = ____
A. 4
B. 8
C. 16
D. 32
( )6. 若数组名作实参而指针变量作形参,函数调用时实参传给形参的是____
A.数组的长度
B. 数组第一个元素的值
C. 数组所有元素的值
D. 数组第一个元素的地址
( )7. 虚函数的定义是在基类中进行的,定义时需要冠以关键字____
A. static
B. frend
C. virtual
D. public
( )8. 下列关于一个C++类的静态成员的描述中,错误的是____
A.该类的对象共享其静态成员变量的值
B.静态成员变量可被该类的所有方法访问
C.该类的静态方法只能访问该类的静态成员变量
D.该类的静态数据成员变量的值不可修改
( )9. 在C++语言中,以下说法正确的是____
A.多态是通过虚表实现的
B.构造函数可以声明为虚函数
C.析构函数不可以声明为虚函数
D.抽象类中至少包含一个纯虚函数
( )10. 对于动态分配内存空间描述正确的是____
A.使用new运算符分配的内存空间的长度必需是常量
B.delete运算符可以释放动态的存储空间和静态的存储空间
C.由new分配的内存空间是不连续的
D.delete运算符只能释放由new分配的动态存储空间
( )11. 设栈S和队列Q的初始状态均为空,元素a,b,c,d,e,f,g依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b,d,c,f,e,a,g,则栈S 的容量至少是____
A. 1
B. 2
C. 3
D. 4
( )12. 下列说法错误的是____
A.已知一颗二叉树的前序遍历顺序和后序遍历顺序,可以唯一确定这棵二叉树
B.将一个递归算法改为非递归算法时,通常使用队列作为辅助结构
C.快速排序和堆排序都是不稳定排序
D.二分查找法,平均时间复杂度为O(n)
( )13. 对于关键字序列( 26,25,72,38,8,18,59),采用散列函数H(Key)=Key mod 13构造散列表(哈希表)。
若采用线性探测的开放定址法解决冲突( 顺序地探查可用存储单元),则关键字59所在散列表中的地址为____
A. 6
B. 7
C. 8
D. 9
( )14. 三台服务器A,B,C,独立运转时发生故障的概率分别为0.1、0.2、0.3,三台服务器同时运行,则至少有一台出现故障的概率为____
A.0.496
B.0.504
C.0.6
D.0.4
( )15. 关于数据结构,下列描述当中,正确的是____
A.在深度为5的满二叉树中,叶子节点的个数为32
B.队列、栈以及二叉树都是线性结构
C.算法的复杂度主要包括时间复杂度和空间复杂度
D.在待排序的元素序列基本有序的前提下,效率最高的排序方法是堆排序
( )16. 某计算机系统中有8台打印机,由K个进程竞争使用,每个进程最多需要3台打印机。
该系统可能会发生死锁的K的最小值是____
A. 2
B. 3
C. 4
D. 5
( )17. 假设a 是一个由线程1 和线程2 共享的初始值为0 的全局变量,则线程1 和线程2 同时执行下面的代码,最终a 的结果不可能是____
boolean isOdd = false;
for (int i= 1; i <= 2; ++i) {
if (i%2==1) isOdd = true;
else isOdd = false;
a += i * (isOdd ? 1 : -1);
}
A. -1
B. -2
C. 0
D. 1
( )18. TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是____
A.FIN
B.FIN,PSH
C.ACK
D.FIN,ACK
( )19. 主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP段,期望与主机乙建立TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP 段可能是____
A.(SYN=0,ACK=0,seq=11221,ack=11221)
B.(SYN=1,ACK=1,seq=11220,ack=11220)
C.(SYN=1,ACK=1,seq=11221,ack=11221)
D.(SYN=0,ACK=0,seq=11220,ack=11220)
( )20. 对于下列说法,错误的是____
A.TCP协议可以提供可靠的数据流传输服务
B.TCP协议可以提供面向连接的数据流传输服务
C.TCP协议可以提供全双工的数据流传输服务
D.TCP协议可以提供面向非连接的数据流传输服务
E.TCP/IP协议属于应用层
( )21. 下列关于IP 路由器功能的描述中,正确的是____
A.运行路由协议,设备路由表
B.监测到拥塞时,合理丢弃IP 分组
C.对收到的IP 分组头进行差错校验,确保传输的IP 分组不丢失
D.根据收到的IP 分组的目的IP 地址,将其转发到合适的输出线路上
( )22. 下列关于http 状态码描述正确的是____
A.404读取浏览器缓存,502错误网关
B.404找不到资源,403服务器错误
C.500服务器错误,304读取浏览器缓存
D.304服务器错误,200请求成功
E.500找不到资源,200请求成功
( )23. 某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是____ A. 32,8 B. 32,6 C. 8,32 D. 8,30
二.程序阅读与填空(第1、2题各5分,第3题10分,共20分)
1.以下代码模拟程序发生死锁,请修正代码中的错误以达到预期结果,答案填在正确的位
置。
public class BankAccount {
double balance;
int id;
BankAccount(int id, double balance) {
this.id = id;
this.balance = balance;
}
void withdraw(double amount) {
// Wait to simulate io like database access ...
try {Thread.sleep(10L);} catch (InterruptedException e) {}
balance -= amount;
}
void deposit(double amount) {
// Wait to simulate io like database access ...
try {Thread.sleep(10L);} catch (InterruptedException e) {}
balance += amount;
}
static void transfer(BankAccount from, BankAccount to, double amount) {
synchronized(from) {
from.withdraw(amount);
to.deposit(amount);
}
}
public static void main(String[] args) {
BankAccount fooAccount = new BankAccount(1, 100d);
BankAccount barAccount = new BankAccount(2, 100d);
new Thread() {
public void run() {
BankAccount.transfer(fooAccount, barAccount, 10d);
}
}.run();
new Thread() {
public void run() {
BankAccount.transfer(barAccount, fooAccount, 10d);
}
}.run();
}
}
2. 下列代码的运行结果输出____
int a[] = {1,2,3,4};
int *b = a;
*b += 2;
*(b+2) = 2;
b++;
printf("%d,%d\n",*b,*(b+2));
3. 以下代码合并两个链表并保持原来的排序顺序,请将代码补充完整。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode temp = new ListNode(0);
ListNode pre = temp;
temp.next = l1;
while (l1 != null && l2 != null) {
if (l1.val > l2.val) {
} else {
}
pre = pre.next;
}
if (l2 != null) {
pre.next = l2;
}
return temp.next;
}
三.编程题(每题15分,共30分)
1. 给定两个字符串str1、str2,找出两者最长共同子串的长度,比如str1=bigolive、str2=ilovebigo,结果为4。
2. 公司给大家派发下午茶,提供N种食物,每种食物有一定热量,有些食物可能热量相同。
请找出热量第二低的食物。
输入:首先输入一个正整数N(N <= 30),接下来输入N个数表示每种食物的热量(均为正整数且小于等于1000)
输出:如果存在热量第二低的食物,请输出它的热量值,否则输出-1。