【回馈牛客】大厂C/C++ 22届实习面经 详细的(1)


2月

百度一面

自我介绍
项目是否有实际上线、是否进行过测试
QPS压到了多少,MYSQL是否是性能瓶颈
介绍一下项目中的任务队列和线程池
线程池的实现逻辑
怎么对task封装和抽象的?
线程的状态模型,如何转换
讲一下vector和list的区别
vector和list迭代器的区别
迭代器失效问题
unordered_map的底层结构
C++11了解哪些 讲一讲
二叉树的几种遍历方式 递归非递归 前中后序层序 口述思路
代码实现:镜像翻转二叉树 分别递归和递归实现
是否了解大数据处理相关的知识
刚才代码 分析时间复杂度和空间复杂度
讲一下进程和线程的区别
进程和线程通信
死锁产生的原因
你有什么想问我的

百度二面

自我介绍
手写单例模式(几个点:线程安全 、构造函数私有,拷贝构造私有)
使用mutex加锁的话new失败抛异常 unlock怎么办(lock_guard)
是否实际使用过单例模式
讲下项目中线程池的实现原理
讲下项目中的对象池
代码(检验迭代器失效的理解):vector遍历过程中插入和删除
1.删所有奇数元素
2.在每个奇数元素后面插入n个奇数元素二倍的元素
删除vector中元素会导致整体前移,效率低,怎么办(不更换容器 原地)
分布式:两个大文件存url 每个url大小64字节 内存大小4G 不足以全量读入两个文件 怎样找文件1在文件2中出现过的url
又问项目的QPS、测试问题
做项目时遇到了什么难题

深信服一面

自我介绍
项目是一个人做的吗
项目测试并发量
为什么使用epoll和select区别
epoll比select优化了哪些
epoll细节,是否有用户态到内核态的拷贝
虚函数的实现原理
C++的内存分区
栈区和堆区的地址(低地址到高地址还是高到低)
C++为什么要结构体对齐
大端序和小端序 怎么判断
memcpy有什么问题需要注意
(答了越界问题和目标可写 不是面试官要的答案 应该是要答非连续空间数据拷贝)
STL map multimap底层
浏览器输入网址访问的过程
HTTP报文的构成
IP头结构
虚拟内存
为什么要有虚拟内存
页面置换算法知道哪些 伙伴算法了解吗
两个栈实现队列
找链表倒数第k个节点
查找算法知道哪些
大数据查找 百万条 1G内存
反问

深信服二面

反转链表
什么是虚拟内存
野指针的情况(没初始化 释放没置空 超过生命周期)
内存对齐
多态 虚函数讲一下
继承和重写
如何保证线程安全
TCP保证可靠传输
反问

3月

腾讯一面

C++内存分区讲一讲
static关键字的作用 static变量存在哪个分区
Linux ELF可执行文件听过吗
构造函数可以是虚函数吗 为什么
unordered_map容器和map容器的底层区别
Hash冲突的解决方法
假如让你设计LRU,如何设计
为什么要有虚拟内存 说说你的理解
TLB是什么
线程间通信方式有哪些
自旋锁和乐观锁悲观锁的关系
MySQL InnoDB索引为什么用B+树而不是B-Tree或者AVL
MySQL怎么操作导出 (让我答自带的工具 mysqldump 没听过)
有优化过SQL语句吗  谈谈经验
HTTPS为什么使用混合加密
对称加密和非对称加密的性能差多少?
为什么对称加密性能高 从加密原理讲
Linux下命令: IO占用高如何排查
CPU占用高 如何排查
怎么看一个进程打开了哪些文件
TCP拥塞控制和流量控制
accept发生在三次握手的哪个阶段
抓包过吗 tcpdump用过吗
代码:
1.写一个函数:返回一个数组各个元素除这个数组第一个元素的结果 -- 考严谨性 除零判断
2.有重复数据的二分查找 找第一次出现位置
逻辑题:
1000个苹果 10个箱子 ,怎么放才能让箱子组合出任意个数的苹果
反问环节

快手一面 居然都是笔试题

1.  环境为32位机 (int 占4Bytes)下,运行如下代码。请问输出什么,为什么?
int a = 0x1234;
char * p = (char *) &a;
printf("0x%x ", (int)*p);
printf("0x%x ", (int)*(p+1));
printf("0x%x ", (int)*(p+2));
2. 请找出下面代码中的所有错误 说明:以下代码是把一个字符串倒序,如"abcd"倒序后变为"dcba"
#include"string.h"
int main() {
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
3. 请找出下面代码中的所有错误
void GetIntA(int *p)
{
p = malloc(sizeof(int));
return;
}
int * GetIntB()
{
int kk;
return &kk;
}
void main(void)
{
int *p;
p = NULL; GetIntA(p); *p = 0x22;
p = NULL; p = GetIntB(); *p = 0x33;
}
4. 环境为32位机 (int 占4Bytes)下
int a = (int)(((int *)0)+4); a等于多少?为什么?
//64位机,linux环境,物理内存16G
void foo()
{
int n = 0;
while(true){
void * p = malloc(1*1024*1024);
if(NULL == p) break;
n += 1;
}
}
5. 编程题:用c语言写一个函数,把字符串里面的空格全部去掉,并返回删除的空格的个数,不允许新开辟空间,只能申请简单类型的自动变量。时间复杂度O(n)
int del_blanks(char * str);
"I am a student";
6. 完全随机的抽取50人, 求这50人发生生日冲突的可能性有多大?
说明: 1. 只要同月同日生,就算生日冲突 (岁数可不同)
2. 不考虑闰年,每年都按365天算。

百度 后台实习 一面

自我介绍
C++对象模型 怎么理解 讲一下
编译的过程讲一下
include双引号和尖括号什么区别
怎么样指定系统库的目录
Path环境变量知道吗  和之前说的includ头文件有关系吗
vector容器知道多少 讲一下
vector是线程安全的吗
resize 和 reserve的区别
resize时,如果容器中是类的对象,STL怎么做
I/O指什么
Linux下I/O多路复用解决什么问题
select和epoll的区别(延申讲原理 性能比较 使用场景)
深拷贝和浅拷贝的区别
new和malloc有什么区别
讲一下new、动态内存分配
什么是内存泄漏
怎样判断有没有内存泄漏
分析题:考内存对齐
这个类占用多少空间
如果加上一个成员函数呢  ; 如果加入虚函数呢
算法题:
反转链表
在上面基础上,判断回文链表


百度 二面

自我介绍
写项目中遇到过什么问题 讲一下(延申讲一下改进想法)
TCP如何保证可靠性讲一下
常见的IPC通信方式有哪些 选一个了解的仔细讲一下(mmap 延申讲了原理 为什么mmap效率高)
怎么判断某段代码是不是线程安全的
写一段线程同步的代码  不限内容
对于一个慢查询 如何考虑优化
十亿个数据 如何提高查询效率
线程和进程的区别
代码题:
熟悉哪种排序,写一下吧


百度 三面

(排队一小时 面试七分钟)
自我介绍
项目详细说一下
MD5是加密算法吗?为什么使用MD5?
传输层使用什么?应用层如何设计 协议方面
客户端使用什么做的
客户端有多少个线程,收发是同一线程吗
项目是学习的还是有实际应用?
能实习多久 实习多长时间
对业务方向有什么倾向
你有什么想问的?



#实习##面经##腾讯##百度##阿里云##C++工程师#
全部评论
楼主线程池能够分享一下吗😄
点赞 回复 分享
发布于 2021-04-09 11:39
请问一下项目的并发量一般用什么工具测试啊
点赞 回复 分享
发布于 2021-04-06 09:46
快手 我们可能遇到了同一个面试官,题目全都一模一样😂
点赞 回复 分享
发布于 2021-04-06 07:44
项目也是Linux服务器吗
点赞 回复 分享
发布于 2021-04-06 01:42

相关推荐

05-23 12:00
门头沟学院 C++
5.22一面,总共时长125min1.如何保护用户的隐私2.int* createArray() {int arr[3] = {1, 2, 3}; return arr;} 这段代码有什么问题3.对上述代码进行改进,写出能想到的所有方法(我写了一个malloc,全局数组,静态数组)4.说一下三种方式的优缺点5.全局数组和静态数组有什么区别6.解释完美转发的作用及实现方式7.const int*,int const*,int* const, const int* const的区别8.实现一个无锁计数器9.调用C++11实现一个线程安全的有界环形队列(circular buffer),要求如下:支持多线程环境下的并发push和pop操作,队列有固定容量,满时push操作要阻塞,空时pop操作要阻塞。不允许使用第三方库,只能用C++11标准库,说明你的实现如何保证线程安全,并分析可能的性能瓶颈。10.unique_lock 和 lock_guard的区别,为什么你刚才给我的代码用的是unique_lock 而不是 lock_guard 呢11.你写的代码的性能瓶颈是什么?如果有大量得到生产者和消费者会怎样呢12.把第9个改成非阻塞的,写一下,为什么你这个非阻塞用lock_guard这个锁呢13.有一类二叉树用三叉链表来存储的时候除了带有指向左右孩子节点的两个指针,还有指向父节点的指针,那么这样一棵二叉树有n个节点,那么有多少指针指向NULL(对于不存在的节点表示为空)14.int n = 2019; int count = 0;  while(n){count++; n = n&(n - 1);} cout << count << endl;输出是多少,为什么15.给定一个递增循环整数数组,从里面找出最小的元素,使用的算法越快越好。特别地,最小的元素可能出现在数组中间。比如:50,52,63,90,3,8,15,44,49,int findmin(int array[]){}16.在二叉排序树上面找出第3大的节点。注意:不能把二叉树全量存储到另外的存储空间,比如存储到数组中,然后取出数组的第三个元素。class TreeNode {public:int value;TreeNode*left;TreeNode* right};TreeNode* find(TreeNode*root) {}17.动态规划题:给定一个长度为l的木棍,已知有n个切割点,要求在每个切割点都要切割,注意每次切割的开销为当前木棍的长度,例如一个10米的木棍,切割点为2,4,7。有多种切割方式,其中可以先切2,再切4,再切7,此时开销为10+8+6=24(第1次切木棍为10米,笑2次切木棍为8米,第3次切木棍为6米),也可以先切4,再切2,再切7,出约著销为10+4+6=20,这时开销更小你的任务是计算切割的最小开销。
查看17道真题和解析
点赞 评论 收藏
分享
评论
7
115
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务