C++客户端面经总结

C++客户端面试题

富途 C++客户端开发 一二三面

作者:zjk_
链接:https://www.nowcoder.com/discuss/506826?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

一面
自我介绍
A=0,两个线程for循环对A进行加一,问两个线程运行完后A的值
原子操作
TCP三次握手,如果去掉最后一次会怎么样
手撕代码:sql,条件统计
智力题:25匹马5跑道取前三,最少几次
算法题:topK (描述思路)
手撕代码:二叉搜索树插入(这里我把BST当成AVL了)
反问:技术框架
二面
TCP协议在哪一层,IP协议呢
应用层有哪些协议
TCP和UDP谁的吞吐量大
TCP是单工还是双工,是否有序
TCP三次握手和四次挥手
死锁怎么理解
死锁是指两个或两个以上进程在执行过程中,因争夺资源而造成的相互等待的现象。
死锁发生的四个必要条件:互斥条件、请求保持条件、不可剥夺条件、环路等待条件
互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程请求访问该资源,只能等待,直到占有该资源的进程使用完成后释放该资源
请求和保持条件:进程获得一定资源后,又对其他资源发出请求,但是该资源可能被其他进程占有,此时请求阻塞,但该进程不会释放自己已经占有的资源。
不可剥夺条件:
进程已经获得的资源,在使用完成之前,不可被剥夺,只能在使用完后自己释放。
环路等待条件:
进程发生死锁后,必然存在一个进程-资源的环形链。
解决死锁的方法:
破坏请求和保持条件,资源一次性分配
破坏不可剥夺条件:当进程的新资源得不到满足时,释放已经占有的资源
破坏环路等待条件:i系统给每类资源赋予一个序号,每个进程按编号递增的请求资源,释放则相反。

进程和线程怎么理解
什么是栈溢出
访问权限,除了public还有哪些
内部类访问外部类的方法
多态有哪些形式
重写时访问权限的变化
值传递和地址传递
智力题:
8个乒乓球,一个假的,一个天平,最少称重次数
两个小孩,其中一个女孩,另一个是女孩的概率
你身边的人怎么评价你
反问:晋升机制

三面(hr面)
有点像问卷调查


声网c++客户端开发面经

作者:跳至星空低入尘埃
链接:https://www.nowcoder.com/discuss/488159?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

2.1 extern 关键字
2.2 static 关键字, static局部变量 , static全局变量,内存位置,生存周期
2.3 加了const之后呢,extern const static局部变量 在内存的什么地方, 提示:和操作系统的页面属性有关。
2.4 指针引用的区别,
2.5 指针是c引入的,c++引入引用的话,什么时候用引用,什么时候用指针
2.6 多态。模板和虚函数,
2.7 进程线程,协程,线程调度的办法, 线程同步的方式,假如,多线程的程序改用多协程实现,内部是怎么样子的,

  1. 对你成就感最大的项目说一下。
  2. 反问,问的主要做什么,和建议
  3. 最后一个问题,你觉得你最大的优势在哪里,那一部分是你最喜欢最擅长,课外时间都会愿意花时间去做的呢。

就是最后给我讲的时候特别真诚,就是面试的时候你要展示你擅长的东西,你擅长什么呢,应用层面的东西培训一下很快就可以上手,业务量大了之后,就是对底层原理的了解,去改造redis,mysql,自己造轮子。


快手一面凉经(C++客户端)

作者:proxys
链接:https://www.nowcoder.com/discuss/485532?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

  1. 讲项目–包含md5、对称加密、非对称加密,应用
  2. http和https
    (讲到非对称加密的应用时提到了,后来就慢慢引入)
  3. cookie保存在哪里,会不会上传
  4. tcp和udp的区别
    tcp的可靠性
  5. 虚函数多态
    怎么实现的多态
  6. 静态多态
    除了重载和模板之外还有什么多态实现方式 这个没答出来:)
  7. 环形链表算法:为什么一定会相遇

链表每两个翻转
,没写出来(

面试官人很好,算法没打出来,应该是凉了-.-||
(前面答得还好,算法没做出来,希望能给我二面


猿辅导 C++客户端开发 一面凉经

作者:zjk_
链接:https://www.nowcoder.com/discuss/500879?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

C++ 客户端开发
0905 一面凉经
堆和栈的区别
多线程中,堆和栈怎么分配的
线程同步如何理解,有哪些方法
可执行文件
程序构建的流程

编译涉及到哪些步骤
局域网下的设备和公网的怎么通信
手撕代码:有序数组中,元素成对出现,仅有一个不成对,找出来
手撕代码: 57. 插入区间
最后一题原理挺简单的,但是到45分钟的时间点了还没调试好,gg

虎牙c++客户端意向书还愿,许愿offer

作者:未必就是我
链接:https://www.nowcoder.com/discuss/513816?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

一面:40min
1.你对面向过程和面向对象的理解
2. 高内聚低耦合
3. 说说多态
4. 你平时的编程风格
5. 指针和引用的区别
6. 数组和链表的区别
7. 霍夫曼树
8. git
9. sql,给两个表stu和grades,stu包括id、name、class,grades包括id、grade,查询某个班级的平均分
10. linux常用指令
11. 查看内存的命令,top
12. 智力题:8个小球,7个质量相同,1个不同,重量不知道是大是小,没有刻度的天平,最少多少次称出来。
13. 你最熟悉的项目,讲讲
二面:1h
1.说说项目中的难点,你是怎么解决的
2. 用的什么协议来读取网络摄像头的?(rstp。)rstp是基于什么协议的?
3. 如何读取一帧图片的
4. 出题:一张圆桌上有一堆拼图的图块,有的拼在一块,有的没有,但是没有重叠。数出总共有多少块图块
5. 你用过OpenCV里面的哪些函数
6. linux中的常用命令?管道有用到吗?grep用过吗?
2.多线程:磁盘上有很大的文件100G,写个程序把文件都进来,计算所有数的和。在8核的cpu上面,用不同的线程来实现,你会怎么实现,怎么利用多线程?
8. 两道算法题:最大连续上升字符串,最大不连续上升字符串。
9. 最短路径问题:迪杰斯特拉算法
给一张很大的表,查询年龄,优化查询性能
有了解过数据库的索引吗?
范围查询怎么利用索引来提高性能?
b+树的查询时间复杂度。
三面:22min
1.qt的界面用的啥库函数?
2.stl有了解过哪些容器?
vector的源码看过吗?它是不是线程安全的?
5. 多线程和网络编程方面的知识有了解过吗?


奇安信C++客户端一面(40min,凉)

作者:菠萝吹水
链接:https://www.nowcoder.com/discuss/500051?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

3、讲到令牌在项目中选主控制设备(防止主设备down),在服务器中也有这样的需求,balabala
4、对称性加密和非对称性加密的区别
5、哈希算法与签名算法
6、UDP协议的最大长度,超过最大长度会怎么样
7、C++11有哪些新的特性
8、shared_ptr和unique_ptr的应用场景,unique_ptr是怎么实现的
见智能指针章节
9、面向对象的多态,举个例子说明多态的应用
10、进程间如何进行同步,锁机制是怎么实现的
11、信号量是怎么实现同步的
12、进程间通信有哪些方式
13、你觉得你最近花时间较多的方面是什么,觉得对哪方面比较熟(答:算法和数据结构,没往下问,凉)
16、反问1:非科班出身,应该怎么样去学习相关知识(答:多看些开源的项目和去做一做,多练才能会)
反问2:接下来还有什么流程(答:如果还有二面的话,会在半个小时内通知你)


大华 C++客户端开发 一面

作者:Tavi
链接:https://www.nowcoder.com/discuss/520830?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

  1. 内存泄漏了解吗?(引到项目方面)

  2. 怎么发现内存泄漏?
    参考:QT下类未指定父对象,导致内存泄漏,可增加关键词 Qt::WA_DeleteOnClose
    推荐:https://blog.youkuaiyun.com/a844651990/article/details/78814076
    https://blog.youkuaiyun.com/iot_shun/article/details/79942743

  3. QT下多线程操作ui句柄,会发生什么?怎么发现QT下多线程无法操作ui句柄?
    参考: 在QT中,子线程是无法直接操作UI的,否则会报错,会出现线程冲突之类的错误。
    https://blog.youkuaiyun.com/wangzhezhilu001/article/details/100715796

  4. C++引用?

  5. 析构函数可以声明为虚函数吗?目的为了什么?

  6. 析构函数忘记声明为虚函数,会引起什么问题?(面试官回答了)

  7. QSS有没有接触过?(但是后面想到了,说了用过,但是比较少)

  8. QT下的model view了解吗?
    9.网络相关知识了解吗?(引到了项目上面)

  9. TCP/UDP?(讲解TCP的项目,碰到的问题,解决方式,成果)

  10. 你自己偏向于哪个方向?

  11. 平时看哪些书籍(APUE必推哈哈哈,把书籍摆在书桌上,挨个念,但是怕真的问我书籍里面的相关知识!!)


大华 C++客户端还愿贴

作者:牛客904744160号
链接:https://www.nowcoder.com/discuss/559299?type=post&order=time&pos=&page=1&channel=-1&source_id=search_post_nctrack&subType=2
来源:牛客网

希望还在找工作的伙伴们加油,多投总有搜获的。
1.在C/C++中static有什么用途?
2.引用与指针有什么区别,指针概念?
3.进程与线程区别,他们之间通信方式。安全性问题,锁等,最好结合自己项目来说。
4.重写与重载,虚函数,多态?
5.STL标准库中vector、list、map可能会问到底层实现和他们特点索引等。
6.栈和堆,队列问题。
7.几种排序中,熟记两到三种。

8.TCP/UDP区别,TCP怎样建立连接。最大传输单元。

9.http和https区别,协议中基本的命令。

10.socket网络编程
11.new和 malloc区别
12.结构体和类
13.MYSQL中常见的查询语句,几种链接查询方式。
14面试官最爱问在项目中遇到的什么问题,怎样解决的。


x

2.内存布局(栈,堆,全局变量,常量区,代码区)大概说下各个区的功能
4.sizeof()和strlen()的区别,int a[5]; sizeof(a)是多少
5.结构体内存对齐了解吗,32位系统带double的结构体占多少内存
6.能不能用memcmp()比较两个结构体(不能,结构体对齐会补随机数据)
7.函数指针和指针函数的区别
8.不定餐传参,多参数传参原理
9.map底层,vector内存布局
10.哈希表原理,
15.用过linux操作系统吗,

二面:
自我介绍
1.i/o多路复用
2.四次挥手出现大量close_wait的原因
3.vector的扩容机制,map的底层,红黑树查找的复杂度(O(logn))红黑树有哪些应用,,
4.找一篇文章里出现频次最高的十个单词,堆和快排哪个更快,
5.要测一个小球的耐摔力,从第几层摔下去会碎,两个小球一百层楼,最快几次能测出来
6.给一千万个玉米,找一个玉米存不存在,
7.25个人跑步,5条赛道,最少比几次赛能找出前三,每个人成绩都很稳定,即A比B快,B比C快,A就比C快,(七次,分成ABCDE五组全部测一遍需要五次,第六次五组第一测一次,假如A1>B1>C1>D1>E1,A1确定是第一名,然后第七次A2,A3,B1,B2,C1测一下得到第二名和第三名)
8.在纸上手写memcpy()
double free知道吗?什么情况会造成?
https://blog.youkuaiyun.com/qq_19683651/article/details/79576103

### 网易互娱客户端发面试经验与技术问答 在准备网易互娱客户端发岗位的试时,除了掌握基础编程技能外,还需要深入了解游戏发中的关键技术点。以下是针对该领域的一些常见技术和问题分析。 #### 一、C++内存管理 对于客户端发而言,C++是常用的语言之一,其内存管理和资源释放尤为重要。关于`new`、`delete`和`free`的区别,需明确以下几点[^3]: - `new`用于分配对象的同时调用构造函数。 - `delete`则负责销毁对象并释放内存。 - `malloc`/`free`仅处理原始内存分配,不会涉及构造或析构过程。 ```cpp // 示例代码展示 new 和 malloc 的区别 class MyClass { public: int value; MyClass() { std::cout << "Constructor called\n"; } ~MyClass() { std::cout << "Destructor called\n"; } }; int main() { // 使用 new 创建对象 MyClass* obj1 = new MyClass(); delete obj1; // 使用 malloc 分配内存 void* rawMemory = malloc(sizeof(MyClass)); free(rawMemory); } ``` #### 二、图形渲染引擎 客户端发通常涉及到OpenGL/DirectX/Vulkan等图形API的应用。熟悉这些框架的基础概念及其优化技巧至关重要。例如,在性能敏感的游戏场景下,如何减少Draw Call次数成为了一个重要话题[^1]。 #### 三、网络通信协议 实时多人在线游戏中,可靠的网络同步机制不可或缺。UDP因其低延迟特性被广泛应用于此类应用中;然而TCP也有它的适用场合——比如需要保证数据完整性的聊天功能实现等方[^2]。 #### 四、跨平台支持 随着移动设备普及率提高,越来越多项目要求具备良好的多端兼容能力。此时可以借助像Unity这样的综合性解决方案或者自行构建基于HTML5/WebGL的小程序版本来满足需求。 #### 五、其他注意事项 还包括但不限于算法复杂度考量、并发控制策略选择等问题都需要提前做好充分复习准备工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值