华为19B.C++开发工程师面试方案。(配答案)

华为内部职级体系,本编文章中就不给大家介绍了。前几篇文章中有介绍,请关注我。

今天分享下高级工程师们的面试总结,这些问题你能答上几个?(含答案)

第一阶段:啃书
《软件设计师教程》

《程序员面试攻略》

《tcp/ip详解卷1~3》

《C++Primer》

先把基础的数据结构与算法(c++)版搞得非常熟,对于数组,链表,栈,队列,字符串,二叉树,查找,排序要非常熟,最好多写几遍。其他的在面试之前两三个月内看看

第二阶段:简历,自我介绍,群面
简历:这个稍微说下,很多C++程序员,面试的时候对于自己的简历方面做的功课不是很多,因为一是不了解公司所需员工细节需求,二是过于自信自己对于知识要点上能做出来的成果。急于在笔试上表现自己。但同样的笔试成绩,简历上的二选一就能体现出来了。

☆没错,简历也是需要好的框架的。 自我介绍自由发挥就好了。群面(就是带领大家玩下游戏 = = 心累)
华为19B.C++开发工程师面试方案。(配答案)_第1张图片

不啰嗦了进入主题:

第三阶段:笔试·(不会做别着急 ,文末有答案)
华为19B.C++开发工程师面试方案。(配答案)_第2张图片
1、1到100之间的所有素数之和;

2、队列的实现;

3、选首领(有一群人围在一圈,从第一个人开始数1、2、3,数到3者退出,用循环链表实现)

4、字符串匹配问题(int countABC(* s) 输入任何一串字符串,计算机其中有连续ABC子字符串的个数 )

5、用数组存储超大数的问题。

6、询问我操作系统的进程和线程的区别
华为19B.C++开发工程师面试方案。(配答案)_第3张图片

7、ping命令使用的是哪种报文?

8、OSI分哪几个层,IP是在哪个层?

9、哈希表的问题

10、为什么要采取二叉树这种数据结构?(折半查找)

11、两台计算机中的进程怎么互相通信

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

C++开发工程师面试总结
c/c++ 面试题库 v1.0

  1. 基础部分

1.1. 语言

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

二、 阐述 C++的多态

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

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

  1. 高级部分

2.1. 网络

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

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

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

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

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

华为19B.C++开发工程师面试方案。(配答案)_第4张图片

操作系统.

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

十一、 线程间的通信方式

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

数据库

十三、 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 语言的面向过程特点,又成为了

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

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

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

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

二、 阐述 C++的多态

参考答案:

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

运行时多态:

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

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

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

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

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

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

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

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

  3. 纯虚函数是虚函数再加上 = 0;

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

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

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

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

参考答案:

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

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

例:

华为19B.C++开发工程师面试方案。(配答案)_第5张图片

其中:

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

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

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

虚函数表构造过程:

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

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

华为19B.C++开发工程师面试方案。(配答案)_第6张图片

虚函数调用过程

以下面的程序为例:
华为19B.C++开发工程师面试方案。(配答案)_第7张图片

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

华为19B.C++开发工程师面试方案。(配答案)_第8张图片
华为19B.C++开发工程师面试方案。(配答案)_第9张图片

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

资料获取方式:

最后,想学习编程的小伙伴们可以关注+私信回复:“资料”就可以拿到一 份我为大家准备的编程学习资料!

你可能感兴趣的:(C++/Linux知识分享,c++,算法,多态,编程语言,面试)