C++/Linux服务器开发LinuxLinux学习之路

腾讯T3C++开发工程师面试总结,这些问题你能答上几个?含答案

2019-08-06  本文已影响0人  7ee72f98ad17

腾讯C++第一轮面试题目:

不会做别着急 ,文末有答案

1、自我介绍(自由发挥)

2、301和302的区别?

3、红黑树是什么样的数据结构?红黑树和B数的区别?

4、堆和栈的区别?

5、谈一下对乐观锁和悲观锁的认识

6、结构体struct和联合体union的区别

7、三次握手的具体实现,time_wait原理?

8、C和C++的特点与区别

9、计算机网络中不同层有用到哪些协议?

如果这上面这些问题你只会一半,你第一轮就要被淘汰,接下来你就要继续死磕C++啦!

腾讯T3C++开发工程师面试总结

c/c++ 面试题库 v1.0

1. 基础部分

1.1. 语言

一、 C 和 C++的特点与区别?

二、 阐述 C++的多态

三、 阐释 c++虚函数的实现

四、 C 和 C++内存分配问题

2. 高级部分

2.1. 网络

五、 画出三次握手和四次挥手流程图

六、 请阐释 https 建立连接过程

七、 画出 OSI 和 TCP/IP 协议栈的对应关系

八、 请阐释 ARQ 协议的原理和过程

九、 请阐释滑动窗口协议原理和过程

操作系统.

十、 进程通信方式有哪些?哪种效率最高?

十一、 线程间的通信方式

十二、 请分别阐释进程和线程的概念,并分析异同?

数据库

十三、 MySQL 中 myisam 与 innodb 的区别

十四、 innodb 引擎的 4 大特性

十五、 MyISAM 和 InnoDB selectcount(*)哪个更快,为什么

十六、 Redis 支持的数据类型?

十七、 什么是 Redis 持久化?Redis 有哪几种持久化方式?优缺点是什么?

十八、 redis 通讯协议(RESP ),能解释下什么是 RESP?有什么特点?....

十九、 Redis 有哪些架构模式?讲讲各自的特点

数据结构

二十、 线性表

二十一、 二叉树 .

二十二、 红黑树

二十三、 平衡树

二十四、 Radix 树

二十五、 八叉树

二十六、 梅克尔树

算法

二十七、 排序算法

选择/冒泡/快速/堆排等

二十八、 一致性哈希算法

二十九、 paxos 算法

三十、 raft 算法

答案部分

1. 基础部分

1.1.语言

一、 C 和 C++的特点与区别?

参考答案:

答:(1)C 语言特点:

1) 作为一种面向过程的结构化语言,易于调试和维护;

2) 表现能力和处理能力极强,可以直接访问内存的物理地址;

3) C 语言实现了对硬件的编程操作,也适合于应用软件的开发;

4) C 语言还具有效率高,可移植性强等特点。

(2)C++语言特点:

1) 在 C 语言的基础上进行扩充和完善,使 C++兼容了 C 语言的面向过程特点,又成为了

一种面向对象的程序设计语言;

2) 可以使用抽象数据类型进行基于对象的编程;

3) 可以使用多继承、多态进行面向对象的编程;

4) 可以担负起以模版为特征的泛型化编程。

二、 阐述 C++的多态

参考答案:

编译时多态:主要指泛型编程

运行时多态:

C++的多态性用一句话概括:在基类的函数前加上 virtual 关键字,在派生类中重写该函数,

运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生

类的函数;如果对象类型是基类,就调用基类的函数。

1) 用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数;

2) 存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的

虚指针。虚表是和类对应的,虚表指针是和对象对应的;

3) 多态性是一个接口多种实现,是面向对象的核心,分为类的多态性和函数的多态性。;

4) 多态用虚函数来实现,结合动态绑定.;

5) 纯虚函数是虚函数再加上 = 0;

6) 抽象类是指包括至少一个纯虚函数的类;

纯虚函数:virtual void fun()=0;即抽象类,必须在子类实现这个函数,即先有名称,没

有内容,在派生类实现内容。

三、 阐释 c++虚函数的实现

参考答案:

简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与

之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。

例:

其中:

B 的虚函数表中存放着 B::foo 和 B::bar 两个函数指针。

D 的虚函数表中存放的既有继承自 B 的虚函数 B::foo,又有重写(override)了基类虚函

数 B::bar 的 D::bar,还有新增的虚函数 D::quz。

虚函数表构造过程:

从编译器的角度来说,B 的虚函数表很好构造,D 的虚函数表构造过程相对复杂。下面给出

了构造 D 的虚函数表的一种方式(仅供参考):

虚函数调用过程

以下面的程序为例:

由于答案部分太多了,就不一一表现出来了,大家如果想要获取此份腾讯T3级面经的PDF答案,可以私信我“面试”即可获取,首先要关注我之后才能私信哦

已整理到PDF文档,面试题+答案

资料获取方式:

最后,想学习编程的小伙伴们可以+群,9643,83639就可以拿到一 份我为大家准备的编程学习资料!

上一篇下一篇

猜你喜欢

热点阅读