华为内部职级体系,本编文章中就不给大家介绍了。前几篇文章中有介绍,请关注我。
今天分享下高级工程师们的面试总结,这些问题你能答上几个?(含答案)
第一阶段:啃书
《软件设计师教程》
《程序员面试攻略》
《tcp/ip详解卷1~3》
《C++Primer》
先把基础的数据结构与算法(c++)版搞得非常熟,对于数组,链表,栈,队列,字符串,二叉树,查找,排序要非常熟,最好多写几遍。其他的在面试之前两三个月内看看
第二阶段:简历,自我介绍,群面
简历:这个稍微说下,很多C++程序员,面试的时候对于自己的简历方面做的功课不是很多,因为一是不了解公司所需员工细节需求,二是过于自信自己对于知识要点上能做出来的成果。急于在笔试上表现自己。但同样的笔试成绩,简历上的二选一就能体现出来了。
☆没错,简历也是需要好的框架的。 自我介绍自由发挥就好了。群面(就是带领大家玩下游戏 = = 心累)
不啰嗦了进入主题:
第三阶段:笔试·(不会做别着急 ,文末有答案)
1、1到100之间的所有素数之和;
2、队列的实现;
3、选首领(有一群人围在一圈,从第一个人开始数1、2、3,数到3者退出,用循环链表实现)
4、字符串匹配问题(int countABC(* s) 输入任何一串字符串,计算机其中有连续ABC子字符串的个数 )
5、用数组存储超大数的问题。
7、ping命令使用的是哪种报文?
8、OSI分哪几个层,IP是在哪个层?
9、哈希表的问题
10、为什么要采取二叉树这种数据结构?(折半查找)
11、两台计算机中的进程怎么互相通信
如果这上面这些问题你只会一半,你第一轮就要被淘汰,接下来你就要继续死磕C++啦!
C++开发工程师面试总结
c/c++ 面试题库 v1.0
1.1. 语言
一、 C 和 C++的特点与区别?
二、 阐述 C++的多态
三、 阐释 c++虚函数的实现
四、 C 和 C++内存分配问题
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.语言
一、 C 和 C++的特点与区别?
参考答案:
答:(1)C 语言特点:
作为一种面向过程的结构化语言,易于调试和维护;
表现能力和处理能力极强,可以直接访问内存的物理地址;
C 语言实现了对硬件的编程操作,也适合于应用软件的开发;
C 语言还具有效率高,可移植性强等特点。
(2)C++语言特点:
一种面向对象的程序设计语言;
可以使用抽象数据类型进行基于对象的编程;
可以使用多继承、多态进行面向对象的编程;
可以担负起以模版为特征的泛型化编程。
二、 阐述 C++的多态
参考答案:
编译时多态:主要指泛型编程
运行时多态:
C++的多态性用一句话概括:在基类的函数前加上 virtual 关键字,在派生类中重写该函数,
运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生
类的函数;如果对象类型是基类,就调用基类的函数。
用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数;
存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的
虚指针。虚表是和类对应的,虚表指针是和对象对应的;
多态性是一个接口多种实现,是面向对象的核心,分为类的多态性和函数的多态性。;
多态用虚函数来实现,结合动态绑定.;
纯虚函数是虚函数再加上 = 0;
抽象类是指包括至少一个纯虚函数的类;
纯虚函数:virtual void fun()=0;即抽象类,必须在子类实现这个函数,即先有名称,没
有内容,在派生类实现内容。
三、 阐释 c++虚函数的实现
参考答案:
简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与
之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。
例:
其中:
B 的虚函数表中存放着 B::foo 和 B::bar 两个函数指针。
D 的虚函数表中存放的既有继承自 B 的虚函数 B::foo,又有重写(override)了基类虚函
数 B::bar 的 D::bar,还有新增的虚函数 D::quz。
虚函数表构造过程:
从编译器的角度来说,B 的虚函数表很好构造,D 的虚函数表构造过程相对复杂。下面给出
了构造 D 的虚函数表的一种方式(仅供参考):
虚函数调用过程
由于答案部分太多了,就不一一表现出来了,大家如果想要获取此份华为高级工程师面经的PDF答案,可以私信我“面试”即可获取,首先要关注我之后才能私信哦
已整理到PDF文档,面试题+答案
资料获取方式:
最后,想学习编程的小伙伴们可以关注+私信回复:“资料”就可以拿到一 份我为大家准备的编程学习资料!