硬核 | 50 家企业 C 面经分享
时间:2021-09-10 16:33:31
手机看文章
扫描二维码
随时随地手机看文章
[导读]大家好,我是唐唐。昨天一位读者分享了自己的C面试经历。简单沟通后,读者双非本硕,自嘲校招准备注定就是炼狱模式。50家公司的C面经也整理好了。本次就分享下面经。以后分享学习路线和心得。读者情况:双非本硕,本科机械,硕士做的软件开发课题。学过 C偏基础,但是面试前连多态都不会写。研三...
读者情况:双非本硕,本科机械,硕士做的软件开发课题。
学过 C 偏基础,但是面试前连多态都不会写。研三经历炼狱校招,从零开始学习,数据结构和算法也是从零开始。时间:2020 年 10 月- 2021 年 4 月结果:几乎面试了所有大厂,收到了 13 份 offer。虽然没有进大厂,但是拿到音视频开发 offer,音视频开发是理想岗位,待遇也比较满意。
1.六方云(10-21)
- 自我介绍
- C 语法
- 左值引用与右值引用有什么区别,左值引用和右值引用的目的是什么
- 虚函数问了好多
- 什么是多态
- 虚函数和纯虚函数
- 构造函数和析构函数能不能是虚函数
- std::move 是什么
- 计算机网络
- TCP/IP 的连接和断开过程
- timewait 是什么
- I/O 多路复用是什么
- http 接口的函数用过吗
- 操作系统
- 什么是线程、进程
- 多线程和多进程的优缺点
- 项目
- Qt信号与槽实现的机制
- 项目用的多线程是怎么实现的
- 怎么实现通信
2.万集集团(10-22)
- 自我介绍
- 项目:有做过嵌入式项目吗 总结:应该是 KPI,他想找做嵌入式的多点
3.医科达——电话面(10-23)
- 自我介绍
- 项目
- 多线程
- 网络编程:连接方式
- 算法:快速排序
- 面向对象三大思想
- 设计模式,列举一个
- 单例模式怎么处理多线程
4.联影——电话面(10-24)
- 自我介绍
- 项目介绍
- 说说项目的原理
- 面向对象
- 设计模式
- 非智力问题:
- 怎么抗压
- 怎么处理队员之间的问题
5.万兴科技(10-24)
- 自我介绍
- 看过哪些 C 的书
- 多线程,怎么判断线程结束
- vector 中迭代器失效的情况
- 虚析构函数
- FFmpeg 中对视频和音频的同步方法
- map 的内部
- rtmp 协议
6.网易实习
一面(10-28)(PASS1)
- 引用和指针的区别
- 静态链接库与动态链接库的区别
- 程序生成的过程
- 计算机图形学:
- 怎么对图像进行变换,变换矩阵是什么
- 还有其他简单的 OpenGL 问题
- 其他忘了,,,,
二面(11-2)
- 怎么自己实现 Qt 的信号与槽?
- 多态
- TCP 和 UDP 的区别
- 计算机图像学
- 什么是插值?
- 会做数据可视化吗?
- 其他忘了,面试官脾气不是很好,,
7.中望软件(10-31)(PASS2)
- 聊一下项目
- CAD 软件怎么使用
- 会不会 QT、MFC、STL
- 介绍中望公司的情况
8.金山 WPS
电话一面(11-2)(PASS3)
- 假如定义了一个指针,后面接着一个循环并 return,会造成什么后果?(内存泄漏)
- 其他忘了(没有问项目)
电话二面(11-5)
- 知不知道 Qt5 对 OpenGL 有个支持性问题
- 音视频切换的多线程怎么处理帧切换的问题
- 大数据处理题:建立一个数据结构,存储 1 到 10 亿的数,要能够去重和插入(答案:用两个数组,建立二维表格)
- 找出一个 RGB 文件中出现最多的前十种颜色
9.传音控股电话面(11-7)
- 直接问项目的 OpenGL 怎么绘制视频,结果回答不好被嫌弃了;
- 死锁怎么产生的?有没有遇到过死锁问题?(多线程不是一般般的重要!)
10.网易互娱乐(11-12)
- 先做算法题:找出数组中次数最多的前 k 个数
- 说下 C 新特性 auto变量的使用注意事项
- OpenGL 的着色器在每个渲染步骤是怎样的?
- 设计模式、单例模式的线程安全问题
11.斗鱼直播(11-12)
- qt 的消息传递机制
- HTTP 网络协议好多内容
- 怎么实现 map
的(key 是自定义类型) - 单例模式
- 还有好多问题,几乎把计算机基础的难点都问了
12.富士康电话面(11-13)(PASS4)
做富士康的工业互联网。看简历,没问技术基础。给了 offer,但是只有 7K,其他补贴加起来只有 10K,难怪没人去13.卡莱特电话面(11-17)(PASS5)
1.C 和 C 的区别 2.栈和堆的区别 3.双链表和单链表的优缺点 4.面向对象三大特性:封装、继承、多态,继承的作用是什么 5.了解 Qt 和 MFC 吗 6.工作地点 7.对薪资有什么要求14.联想面试(11-27)
- C 和 java 的区别
- 描述 STL;vector 和 list 的区别
- 最近的项目——视频播放器设计
- vector 存放数据的注意
- 视频与音频同步
- 多线程同步
- 设计模式、工厂模式
- 文件断点续传
- 用英语简单描述自己的项目
15.新浪微博(12-1)
- OOP 三大特性、继承中三个修饰符的用法
- C 的 static 关键字
- TCP 连接过程中客户端与服务端使用什么函数实现连接
- 智能指针,weak_ptr 能够破坏环型引用的原理(引用计数的原理)
- 用两个栈实现一个队列
16.广和通电话面(12-1)(PASS6)
- 聊一下项目
- 说下项目解决过程你有没有请教别人
- 说下最难忘的项目经历
17.汇川技术
一面(12-1)(PASS7)
- 项目简介
- STL、vector
- QML 与 QWidget 的区别 (QML 从 2.0 版本开始向移动端靠拢)
- 信号与槽机制、信号与槽与函数指针的比较
- 多线程下用信号与槽的优缺点 (connect函数的第五个参数实际上是用在多线程的情况下的)
- socket 的 TCP 的客户端与服务端
- 怎么保证客户端与服务端在突然断网的情况下保证另一端知道?(饱和机制、心跳机制、看门狗机制)
- 说说你的项目的亮点
- auto 关键字 (不能定义数组)
- Qt 的事件过滤器 (事件的传递是由子类往父类上传的)
- 开放性问题:大量数据无序输入,怎么有序输出?(使用最大堆最小堆) (一面的面试官是个态度很好的年轻小哥)
汇川技术二面(12-4)(PASS8)
- 介绍项目组成 - 滤波器的类型 - 怎么确定使用什么滤波算法
- 比赛过程中的团队合作事情
- 数学建模比赛的收获
- 上学期间最有成就感的事情
- Linux 中的互斥锁和 XX 锁
- 简述 STL
- 常用的排序算法
- 以太网了解吗?
- 网络编程
- 职业规划
- 家庭背景
18.声网测试(12-2)
- 介绍音视频测评岗位的工作内容
- 用的什么协议
- 视频播放器、直播推流协议
- 文件传输、视频协议相关工作
- 讲解下用了音视频库的什么模块
19.不知名的公司的音视频开发岗(12-4)
- 做两道编程题:
- 快速排序(函数参数只有 int array,int length)
- 用两个线程实现循环加数
- 深拷贝与浅拷贝区别
- C OOP 三大特性
- 多态的用法
- 项目:视频播放器用到 FFmpeg 哪些库
- H264 编解码原理
- 运动补偿
- 熵编码
- ALCode 视频解析工具的使用
- 直播工具使用了什么服务器
20.腾讯会议客户端(12-4)
- 项目——视频播放器的功能
- 视频中的视频信息、音频信息的数据怎么存放
- 课题中的难点
- C 智能指针
- shared_ptr 的特殊用法
- C 内存管理
- Windows 系统怎么预防死锁
- 怎么解决程序 crashed 问题
- 对音视频编码的了解
- 有几种 NAL,如果在视频中存放信息存放在哪个帧
- 怎么设置压缩码率?
21.恒生电子
一面(12-9)(PASS9)
- C 11 什么新特性好用 多线程
- 用队列处理数据有什么好处?
- 用过什么数据库?
- 多线程与多进程的区别?
- 你认为你的优缺点是什么?
二面(12-10)
- 没问技术问题,只问背景问题。应该是 KPI
22.新思科技
一面(12-14)(PASS10)
- static 在 C 和 C 的用法
- virtual 与析构函数
- Linux 中用什么命令查找文件
- 在项目中使用过多态吗
- 用英文介绍自己的爱好
二面(12-18)
- 项目
- 功能
- 代码量
- 花多长时间
- STL
- 怎么解决哈希冲突
- 长二进制反转
- virtual 析构函数
- 写一个多态,展示内存泄漏
23.浩鲸科技(12-15)
- 操作系统:消息队列、进程消息
- strcpy 和 memcpy 的区别
- 多态具体怎么定义
- 指针、引用怎么在多态里面用的
24.映客直播
一面(12-17)(PASS11)
- 学过什么课程
- 指针和引用的区别
- 局部 变量与全局变量
- 内存的分类
- OOP 三大特性
- Linux 常用命令
- 简单聊聊直播推流工具
- 边下边播用什么协议
- 数据库的事务
- 进程和线程、进程的通信方式、线程的安全问题
- TCP 和 UDP 的区别
- HTTP 的返回码
- 怎么用两个栈实现一个队列
- 怎么获取二叉树的高度
二面(12-22)
- 除了 C ,学过其他语言吗
- MP4 包含了什么协议
- 抖音、直播分别用什么协议
- TS 流有什么内容
- 怎么传递视频信息
- 怎么解决视频卡顿问题
- 内存泄漏怎么排查
- 安卓的生命周期
- 设计模式有哪几种?单例模式有几种创建方式?
- Linux 的常用命令
- 用过 shell 吗
- 怎么通过 shell 获取 MD5 码?
- Linux 获取字符串的方式?
- 建议:多了解前沿的流媒体格式!
25.百富计算机(12-22)(PASS12)
- 多进程多线程用过吗?
- Linux 命令了解吗?
- FFmpeg 编译过吗?
- 音视频解码过程的格式
- 视频播放器开发的过程
- OpenGL 使用的过程
- 顶点着色器与片元着色器的不同
- VBO、FBO
- 画面闪烁是什么原因造成
26.埃森哲面试(12-24)
- 群面,3 个候选人 1 个面试官
- 公司介绍:世界 500 强 咨询公司 外企
- 遇到难题以及解决方法
- 在实习、项目中,怎么处理不属于自己工作范围内的工作
- 职业方向规划?技术专家还是项目管理
27.孩子王
一面(12-29)(PASS12)
- C 有几种构造函数
- STL 的迭代器失效,怎么解决
- C 与其他语言的区别?(指针、回收)
- 智能指针的用法
- 智能指针的使用场景:连接数据库
- STL 是复制性还是侵入性
- 红黑树比AVL的优势,为何用红黑树
- 红黑树的高度
- 数据库的锁、事务、引擎
- 场景题:
- 用户的余额显示、余额减少等,要不要用事务?
- 用户系统,有用户ID。加入有手机号注册,怎么验证是否注册
- 用户扩大时,怎么扩容?
- I/O 多路复用的理解
- 动态规划与贪心算法的区别(背包问题分析)
二面(1-8)
- 多线程的使用场景
- 多线程的锁
- 数据库为何用 SQLite
- 进程间的数据共享
- 怎么实现音视频同步
- 多线程和多进程的区别
- Linux 常用命令?
- 岗位必备技能是:C 基础、网络、数据库。是电商中台
28.富途证券后台开发(1-4)
- 先做几道题
- 说说从浏览器输入网站用到的协议
auto addr = (type) malloc(size); memcpy(addr,"apple");
操作系统满的时候会发生什么?- MySQL 加快查询的方式
29.CETV(1-5)
- Qt 信号与槽的机制
- 为什么 new QWidget 不需要 delete
- vector 的内部机制
- 编译过程
- 虚函数表原理,虚表编译的过程
- new 和 malloc 的区别
- 智能指针内部原理
- 多线程
- TCP、UDP 的区别
- TCP 怎么保证可靠传输
- 在一个局域网中怎么连接两台电脑?
- 平时怎么学 C
30.商汤科技(1-6)
- 简单介绍项目—— vector 怎么 clear
- TCP 粘包、丢包
- 进程的通信
- 内存泄漏
- 智能指针
- Qt 实现多线程
- QSS 属于第几个版本
- 视频播放器怎么音视频同步
- 设计模式
- 举例工程模式
- Qt 的 TableWidget 和 Table View 的区别
- 做题
- 多态的选择题
- 手写 Rational 类(包括<< >>重载)
31.科曼医疗(1-7)(PASS13)
- 介绍硕士课题项目
- Qt 自定义控件方法
- 视频播放器
- Qt 多国语言
- QSS 主题样式
- 设计模式
- 工厂模式的应用场景
- 设计模式的优缺点
- 信号与槽、和事件的区别
- 视频与音频怎么同步
- 介绍公司的研发方向:
- 应用软件开发
- 下位机驱动开发
- 单片机
- Windows 服务器开发
32.思谋科技(1-11)
- 多态及其用处
- 静态多态包含什么类型
- 纯虚函数
- 虚析构函数
- 重载与重写的区别
- extern "C"{}
- const 的作用
- 指针和引用的区别
- C 11 新特性
- 右值引用
- STL
- 哈希
- 强制类型转换
- Qt 的优点、缺点
- Qt 的核心机制
- Qt Graph
- 信号与槽的优点和缺点是什么
- Qt connect 函数的连接方式
- TCP 三次握手的过程
- 手写代码:自定义 String 类(真的要每天都复习八股文)
33.华阳国际设计(1-20)(PASS14)
- 实习的时候做什么工作
- 指针和引用的区别
- 空指针、悬垂指针
- TCP 的三次握手
- 部门分工:
- 图形引擎(C#)
- 平台开发(java、C )
- 建模(C 、OpenGL)
34.中软国际(外包公司)
一面(1-25)(PASS15)
- 多态、虚析构函数
- 强制类型转换
- 类能否嵌套
- vector 改变容量时要注意什么
- 对象移动
- unique_ptr 智能指针
- C 11 多线程
- lock_guard 怎么自动处理的
- 多线程怎么发送信号
- 线程怎么退出
- GDB 怎么调试段错误,怎么查看栈
- Linux 怎么处理 core 文件
- Git 用过吗?
二面(1-28)(PASS16)
- 多态的定义
- 代码的处理过程、汇编的作用
- new 和 malloc 的区别
- 内存的分类
- STL
- vector 的用法
- 项目中是怎么用的
- Linux 用过什么指令
- 项目都是自己做的?
- Qt 多线程用什么函数
- 计网用过什么协议
- 智能指针
- 快速排序的思路
- MFC 用过吗
- 设计模式、单例模式
- 场景题:找出前 K 个最大元素的值(最大堆、最小堆的用法)
三面(1-28)——经典好问题,必须好好分析(PASS17)
- 写代码:找出数组中数量超过一半的元素
int GetNum(int *array,int length) {
C 的 sort 函数是怎么实现的?
unordered_map<int,int> mp;
for(int i = 0;i-1; i){
mp[array[i]];
}
for(int i = 0;i-1; i){
if(mp[array[i]] > length / 2){
return array[i];
}
}
return -1;//没有的话返回-1
//加入数据很大怎么办?——先排序
sort(array);//sort的原理是什么
return(array[length / 2]); - 音视频:YUV 格式与 RGB 格式的区别
- 怎么实现一个服务端连接多个客户端?
- auto 的类型判断发生在什么阶段(编译期) 如果是在运行期的话会发生什么问题
- 多态的分类
- 类型转换
- 智能指针
- 锁的类型,自旋锁的原理
- GDB 的常用命令
- 内存的分类
- 一个栈多大?
35.中国电子系统(1-26)
- 实习的时候做的项目,举例做过的工作
- 做的软件项目的流程
- 单例模式的实现方法
- 观察者模式
- 哈希表的原理以及作用、怎么查找值
- 计网
- 七层模型
- IP 协议
- 三次握手和四次挥手
- 为什么要进行四次挥手
- 线程和进程
- 从 CPU 的角度区别线程和进程
- 快速排序的思路、复杂度
- FFmpeg
36.乐鑫嵌入式(1-27)
- 介绍视频播放器
- 介绍研究生课题
- 代码题:十进制字符串转十六进制字符串
- 选几个关键字描述自己
- 你的优点和缺点
- 你期望的工作
37.中元汇吉(1-27)(PASS18)
- OOP 特性、虚函数
- 内存泄漏、智能指针
- STL
- 学过什么数据结构、举例二叉树的用法
- QT 信号与槽
- 原理
- 优势
- 自定义结构体到信号与槽要注意什么
- 工厂模式、单例模式原理和用法
- 锁要注意什么
- GDB 用过吗
- 项目中要怎么调试代码
- MySQL 索引是什么
- 了解软件架构吗?MVC 模式了解吗?
- 怎么使用软件设计思维?是正向还是逆向?
38.Insta360(1-28)(PASS19)
- 视频播放器
- YUV 是怎么传递到 OpenGL 的
- AVFrame Parma 的意思
- YUV 有很多采样格式,你采用什么采样格式
- STL
- vector 和 list 的区别
- map 与 unordered_map 的区别(考虑到有序与否的区别、哈希函数)
- C 11 的 inplace_push_back 与 push_back 的区别
- unique_ptr 与 shared_ptr 的区别
- lambda 表达式、怎么捕获外部变量
- virtual 析构函数
- 多继承的问题
- 多线程与多进程的区别
- 内存
- 地址空间
- 多进程的锁
- 自旋锁原理
- 怎么避免死锁
- socket 阻塞和非阻塞的区别
- TCP 中间连接的时候断开会发生什么(重传、超时、等待状态、TCP 可靠连接原理)
- 进程内部的栈内存、堆内存、各自的增长方式
- 双链表怎么查找倒数第二个结点
- OpenGL 常见的坐标系的变换顺序
39.wind金融(2-3)
- 第 1 个面试官
- 写过多少行代码
- C 怎么申请连续的内存
- vector 怎么用
- C 的垃圾回收机制
- 工程模式是什么,3 种工工厂模式的区别
- 排序算法有哪些,哪些的复杂度是稳定不变的
- 多线程
- 自旋锁是什么
- 数据库用过吗
- 第 2 个面试官
- 音视频怎么同步
- 展示同步的代码
- 视频播放器
- 展示平衡功能项目
- 多线程怎么同步
- GDB 怎么调试
- vector 是不是线程安全的,怎么写个线程安全的 vector
- 数据库怎么 sip
- C 11 的新特性
- 指针和引用的区别
40.CVTE
一面(2-22)(PASS20)
二面(2-23)
41.腾讯企业微信客户端(2-26)
一面(2-26)(PASS21)
- 1 小时内做 3 到算法题
- 反转单链表
- 找出数组中最小的K个数
- 长整数相加
- 讲解题目(做的不好,分析复杂度)
- 描述 Qt 的消息传递机制
- Windows 消息机制有哪些
- 做题
- 区别 const 指针与 const 变量
- 引用的用法(左值引用与右值引用、引用不能改变绑定对象)
- 多态的用法
二面(3-5)(PASS22)
- 信号与槽的底层原理;信号与槽怎么做到性能优化
- 哈希表与红黑树的对比:结构、查找
- Q t的多线程的信号与槽
- 虚函数表原理
- 构造函数调用虚函数可以吗?会发生什么?
- YUV 与 RGB 的区别
- 音视频同步的方法
- 数据库有几种范式
- HTTP 的底层模型用什么实现(TCP)
- 网络的七层模型,作用、传输单位分别是什么
- TCP 的三次握手
- 写一个快排;能否用非递归方式实现;什么时候复杂度最大?
三面(3-11)(PASS23)
- 继承、多态的定义
- 听过多用组合,少用继承吗
- Qt 的信号与槽原理,怎么了解这个原理的?
- 进程、线程的区别,对 OS 而言有什么目的
- 对 I、B、P 帧的了解、MOOV 的格式了解
- 音视频的了解
- PTS、DTS的区别
- YUV 与 RGB 的区别
- 音视频同步的方法
- 讲下视频播放器
- 流程
- 怎么使用多线程
- 能否用一个线程实现
- 考虑功能扩展吗
- 毕业课题
- 如何采集、滤波、处理
- 考虑数据采集中断的情况吗
- 考虑 C/S 模式吗
- 实习
- 文件传输是怎么实现的
- 做过什么工作
- 平时怎么学习
四面(3-11)
- 给出一个二维 vector 表示点到原点的距离。一个五个点,5X5 的二维 vector。求从原点出发,再回到原点的最短路径,要求必须打印输出结果
- (条件概率)已知城市中蓝色:绿色车的比例是 15:85,目击者称看到蓝色车肇事逃逸,但是人区别蓝色和绿色的正确率是 80%。求真的是蓝色车肇事逃逸的概率
42.万兴科技
一面(3-2)(PASS23)
- Qt、C 分别用过多久?
- 代码量多少
- 比赛中你负责什么角色
- OpenGL 了解的深度、在 QT 中的用法
- FFmpeg 的了解
- Qt 用过多线程、网络吗
- Qt 3D 了解吗
- 实习过程中学会什么
- C 11 新特性;解释右值引用是为了解决什么问题?(移动语义)
- 浅拷贝和深拷贝的区别
- OOP 设计原则
- 博客有多少篇
- 喜欢看什么书
HR面(3-5)(PASS)
综合面(3-9)
- 对 FFmpeg 的使用
- 对音视频的了解
- 对 C 的了解
- 用过 C 的闭包吗?
- OpenGL 的了解
- 其他 offer
- 对公司文化的了解
- 你目前的学习方式是什么?
43.元戎启行
一面(3-10)(PASS24)
- 介绍一些康复器械项目
- C 11 的新特性
- lambda 表达式
- 多线程共享内容问题,共享对象存放在哪个空间
- 进程与线程
- 多进程、多线程
- 多进程通信的方式,有几种信号
- OSI 七层模型
- TCP 与 UDP 的区别
- TCP 拥塞控制
- 要了解 MySQL
- 红黑树的定义
- 手撕代码:把有序链表转为平衡二叉树
- 怎么遍历结点
- 复杂度
- 优化遍历方式
二面(3-15)
- 虚函数
- 虚函数是类的定义出现还是对象的时候出现
- 纯虚函数
- 钻石继承为何不能出现
- 智能指针
- 环型引用
- shared_ptr 的引用计数原理
- 多线程的原子类型
- auto 关键字能给数组赋值,但是不能定义
- 用过 Qt 的什么模块
44.VIVO
一面(3-12)(PASS25)
- 讲一下对 OOP 的理解
- 讲一下单例模式
- 多线程的单例模式
- 锁
- 互斥量为何能够用在多线程
- 数据库
- 表是否一定要有主键
- 主键与唯一索引的区别
- left join ,right join,full join
- 怎么建立索引
- 索引怎么优化
HR面(3-19)
- 介绍家庭情况
- 对 IT 工程师的理解
- 实现过程的收获
- 举例压力大的实例,压力大的时候怎么解决
- 收了什么 offer,为什么拒了
- 你认为手机会怎么发展
- 举例说明你说服别人接收自己观点的一个例子
45.富途Windows客户端开发
一面(3-16)(PASS26)
- 虚表是怎么使用的?虚表指针存放在哪里?
- 构造函数能否为 virtual,能否调用虚函数?
- coding:两数之和,非有序
- coding:LeetCode61 ——给定链表,按照某个规定旋转链表
- 逻辑题:有 10 箱金子,,,,,,
- 网络:
- TCP 与 UDP 的区别
- TCP的窗口拥塞控制
- OS:怎么避免死锁?
二面(3-19)(PASS27)
- 下面是有一个全局变量 a 和两个线程,这两个线程同时开始并发执行各自的代码,
在两个线程都执行结束后,请问 a 的值为______
static int a = 0
;
- 线程1:
for(int i=0; i<10;i ) a = a 1;
- 线程2:
for(int i=0; i<10;i ) a = a 1;
- 已知公司 OA 数据库有一个员工信息表,包含员工 ID,员工姓名,入职时间,和离职时间。财务审核时发现 201803 到 201808 这 6 个月,当时所有在职员工都少发了工资,现在老板需要了解有多少人受影响需要获得补偿。请写出查询语句。
select ID where entryTime > 20180301 and leaveTime < 20180831
select ID where entryTime < 20180301 and leaveTime > 20180831
- 实验室有 100 个瓶子,其中有一瓶装有慢性毒药(第 3 天发作),另外 99 瓶装有蒸馏水。请问至少需要多少只小白鼠才能在3天内找出哪一瓶是慢性毒药?_______只
tyedef struct node {
int data;
struct node* left;
struct node* right;
}*BiTree;
void insertBST(BiTree