今天(2021.02.05)晚上,笔者的一位做软件开发的朋友参加了腾讯云通信IM后台开发的视频面试,现分享一下面试的真题,供大家参考,以备不时之需。
岗位:腾讯云通信IM后台开发工程师
职位描述
负责即时通信IM云相关产品的后台架构设计和功能开发;
搭建云化开放覆盖全球的稳定、实时、高效的消息服务。
工作要求
本科及以上学历,计算机或相关专业;
2年以上Linux/Unix后台开发经验,精通C/C++/go其中一种开发语言;
熟悉TCP/IP协议、网络编程,熟悉Redis、Mysql、Kafka等常用数据库/消息队列;
具有复杂系统设计开发经验,能根据业务需求合理设计架构和模块;
具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力;
好学,责任心强,良好的对外沟通和团队协作能力,能够承担工作压力。通过腾讯云技术认证或同等资格认证的优先录取。
笔试题
说明:以下题目均在32位linux环境下,小端字节序
1、以下语句分别输出什么?(5分)
char str1[] = "abc";
char str2[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << (str1 == str2) << endl;
// 输出:
cout << boolalpha << (str5 == str6) << endl;
// 输出:
2、对于“int i; ”,“(!!i)”等价于:____ (5分)
A. (i != 0) B (i == 0)
C. (i) D. 非法语句
3、以下程序的运行结果是什么?屏幕上面显示什么?(运行环境为UNIX类系统)(10分)
int main(void)
{
printf("ABC\n123");
printf("xyz");
*(int *)0 = 0;
return 0;
}
4、如下代码输出什么?(5分)
#define SQR(x) (x * x)
int main()
{
int a, b = 3;
a = SQR(b + 2);
printf("a = %d\n", a);
return 0;
}
5、求下面结构体大小(5分)
struct B { int b; char c; };
typedef struct
{
int a;
char b;
short c;
char d;
B e;
} S;
求sizeof(S) = ?
6、下面这个代码能否编译通过,不行是什么原因,如果可以,执行结果是什么?(5分)
class Base
{
public:
Base() { VFun(); }
virtual void VFun() { printf("Base ....\n"); }
};
class DBase :public Base
{
public:
DBase() {}
virtual void VFun() { printf("DBase ....\n"); }
};
int main(int argc, char *argv[])
{
DBase*pDBase = new DBase();
return 0;
}
7、这段代码输出什么 ? 或这段代码有没问题?(5分)
int main()
{
string str1, str2;
str1.resize(5);
str2.reserve(5);
memcpy(str1.data(), "abc", 3);
cerr << str1.c_str() << endl;
memcpy(str2.data(), "abc", 3);
cerr << str2.c_str() << endl;
return 0;
}
8、UDP通信, 如果client端sendto一段1024字节的buf, server端循环调用recvfrom(fd, buf, 64, 0), 能否收完?能的话需要调用几次?不能收完原因是什么 ? (5分)
9、tcp通信, client端循环调用send(fd, buf, 1) 1024次发给server, 从server端捉包, 客户端总共发了几个包过来?(5分)
10、有个文件, 内容如下:(5分)
1111 | 33333 | 44444 | 6666
4adf | 33333 | fafdfd | adfdfa
33333 | 22222 | dadffd | adfdfasf
如果想把第二列为33333的行全部输出来, 请问用shell脚本, 该怎么写 ?
11、10亿个随机数中, 取出最大10出来, 说下实现原理 : (10分)