百度C++面经

 

  • new/delete和malloc/free的区别
  • vector的结构?vector拷贝时发生什么
  • 一个数组,只有一个数字出现奇数次,其余数字出现偶数次,如何得到这个数字?如果出现奇数次的数字有2个呢?
  • 给定一个ip地址,编码使得ip和32位整数呈双射关系
  • 50个红球50个蓝球,放到2个袋子里,从两个袋子各取1个球,让2个都是红球的概率最大,怎么放
  • 进程和线程的区别
  • 学过操作系统吗?学过网络吗?没有
  • 时间复杂度为O(nlogn)的排序算法有哪些?简述快速排序的过程
  • C++内存分布
  • 重载和重写的区别
  • Linux下删除同一文件夹下所有满足条件的文件
  • 1个32位无符号整数,计算二进制格式下有多少个1,不通过循环怎么做
  • cmake和makefile的区别
  • 简述cmake到可执行文件的过程
  • 进程和线程的区别
  • git pull和git fetch的区别
  • 学过操作系统吗?学过网络吗?没有
  • 用数据结构模拟浏览器前进后退的操作
  • 2g物理内存,new一个3g的数组时发生什么?
  • 平衡二叉树的特性,红黑树的特性,判断是否为平衡二叉树
  • 虚函数和纯虚函数
  • 智能指针如何实现
  • 进程和线程的区别,多线程和多进程的优缺点

编写shell脚本  查看一个文件,大小大于10M就删除,否则打印内容   不会,谢谢
core dump,出现段错误的原因
哈希表 如何实现 冲突解决
hash table用什么实现,最差插入时间复杂度
函数值传递一个百万个元素的vector会怎么样?为什么?
c 内存分布?

一个二维地图,每个格子有不同分数,求机器人从左下到右上的最大分数的路径。

求一个数组逆序对
三次握手四次挥手的状态字,为什么3次,为什么4次
求最大连续子数组
一次完整的http链接过程,应用层到数据链路层,越详细越好
http https区别
设计模式的了解,单例模式

成员函数的前后const
算法 最短路径

虚拟内存和物理内存的区别
进程线程区别?
谈谈项目中的多线程和线程池?
3、linux下如何快速将文件每行倒序输出?shell或者编程都行,说了下python和c++实现方法,结果人考的是tac命令
4、手撕代码-输出字符串中最长的回文子串长度?写完了不会优化
5、TCP-UDP区别?
描述四次挥手过程,以及timewait、closewait?
timewait过程如果出现过多拥塞或者网络不稳定导致很多非正常数据该如何解决?
linux下如何查看特定端口有多少tcp连接?
6、手撕sql查询排序?
如何通过索引优化该sql?
谈谈Innodb中b+树?myisam和Innodb中b树有什么区别?
7、了解数据结构?图如何表示?图广度遍历用什么结构?
1、char (*p) [] 、char *p[]、char (*p)()的区别?
2、熟悉设计模式?手写下单例模式?
3、手撕代码int atoi(char *str)?
4、谈谈web上访问网址的过程?
说说DNS如何找到ip和port的?若本地和局域网查找不到,如何向上层查找(DNS服务迭代查询和递归查询的流程)?
谈到socket通信,说说握手过程,为何三次握手?
谈到get、post了,get和post的原理和区别?
直到http和http2区别?
熟悉https,https中加密实在哪一过程进行了?
说说ssl加密原理?
5、说说select、poll、epoll区别?
6、熟悉句柄么?程序执行后句柄如何处理,如何修改可打开句柄数量?
7、数组存中在一个大于n/2次的数,如何以最优方法查找它?
8、用栈实现队列,用队列实现栈?
9、如何设计一个高并发的分布式服务器?
10、64匹马、8赛道,知识多少轮比赛找出速度最快的4匹马?(在提示下优化到12次,最优解为10或者11次)

1. 1G内存,4G url,求重复的url
2. 手写二分
3. Linux命令,find,grep,ps,netstat…
4. Python的tuple
5. C 与Cpp的区别
6. const/define
7. C语言内存布局

1.死锁是怎么产生的
2.有没有写过多线程?
3.调度算法有哪些?
4.三次握手四次挥手画图解释一下
5.UDP和TCP区别
6.HTTP和HTTPS介绍一下,区别是什么?
7.HTTPS的安全性是怎么实现的?
8.HTTP有哪几种操作?

Q:TCP三次握手和断开的完整过程
A:(答案网上很多)最后答了一下客户端处于TIME_WAIT状态要等2个MSL才会close
Q:为什么要等2个MSL
A:(答案网上找)
Q:输入www.baidu.com在浏览器的完整过程,越详细越好
A:(网上也有)
Q:说一下cache吧
A:LRU那种?
Q:是的。
A:因为java里面有一个数据结构linkedhashmap这个是很符合LRU的,然后按这个的源码说了一下,主要是hash+链表。
Q:这个怎么实现同步和互斥,怎么样去加锁
A:然后说了一下锁的相关知识,balabala
Q:c++里面的同步和互斥怎么实现的
A:mutex,条件变量之类的说了一下,消费者生产者之类的举了个例子
Q:c++里面的常量怎么定义
A:const和constexpr(这个面试官可能没见过,然后解释了一下)
Q:我主要想说宏
A:这个不算常量,在编译器就已经被全局替换。然后说了一下宏的某些缺点,我一般不会用,balabala
Q:c++的智能指针说一下,区别
A:balabala
Q:c++怎么实现一个函数先于main函数运行
A:用static,balabala
Q:c++的static的变量的初始化顺序怎么样的
A:声明顺序就是初始化顺序
Q:如果一个类里面呢?
A:这里我答错了,我以为是初始化列表的顺序。。。。。。。。(第一次答错)
Q:两个文件,两个static变量a和b,怎么让某个变量先于另外一个初始化呢?
A:通过头文件的声明顺序
Q:其他用户不知道头文件的声明顺序怎么确定呢?
A:不知道。。。。(第二次没答出来)
Q:来一条设计题。百度搜索的智能提示怎么实现,输入两个字,出来一些热搜
A:字典树+堆吧,然后balabala(第三次。。。感觉面试官不是很满意我的答案)
Q: STL说一下
A:balabala

  1. 自我介绍
  2. C++拷贝构造函数为什么传引用
  3. 如何返回值一个类的构造和拷贝构造
  4. 如果声明为私有的,那么是编译时错误还是运行时错误
  5. vector越界访问下标
  6. map越界访问下标
  7. 如何删除map中的奇数节点
  8. 指针和引用的区别
  9. C++中内存泄漏问题
  10. new和malloc的区别
  11. TCP断开连接过程,timewait解释
  12. HTTP中状态码 302(详细问) 403 400
  13. 连续子数组最大和问题
  14. 实习负责的模块是什么?遇到了什么问题和挑战?
  15. C++多态,虚标指针在什么时候初始化
  16. STL库的容器底层实现
  17. 红黑树的插入效率,为什么相对平衡的红黑树比绝对平衡的AVL适用广
  18. B树和B+树的区别,B+树应用在哪?
  19. 哈希表的哈希冲突,解决哈希冲突的几种方法
  20. 进程间通信方式,每个都讲一下
  21. 网编程讲一下。
  22. select和epoll,epoll底层实现,数据的拷贝方式。
  23. 求一个数开根号(二分)
  24. 讲一下timewait状态,没有timewait有什么问题
  25. 滑动窗口和拥塞窗口
  26. 慢启动和快重传
  27. 实现一个功能,能检测内存泄漏问题,通过一个指令输出整个进程中哪一行哪个函数申请了多少内存,按照顺序排列出来,还有总的内存数
  28. 虚基类
  29. 纯虚函数
  30. 虚函数
  31. 虚函数表内存分布
  32. 虚函数中虚基类和派生类的关系
  33. 显示转换
  34. 问了三个算法题 讲讲思路
  35. 学过网络和操作系统吗
  36. 三次握手,四次挥手 握手为什么是两次
  37. 讲一讲拥塞机制 和流量机制
  38. http https抓包工具原理
  39. IP地址分为几类?简单说一下分类
  40. 进程通信有哪些方式
  41. 进程同步的方法
  42. 知道互斥锁吗?

    他用什么来保证共享数据的安全性?

    这个我说信号量,他说如果用信号量来解决,现在出现一个状况,两段进程都被标记为可以访问该共享数据,但我们的共享单元只能支撑一个进程访问。这时候怎么办?

    我说用唯一标识符去处理。生成唯一标识符,这样就不会出现这种情况。

    他说不对。让我回去好好看看。

    回去查了一下,是原子操作。。

    1. 为什么继承时基类的析构一般声明为虚函数?
    2. 虚函数与纯虚函数的区别在于
    3. 为什么构造函数不能够使虚函数

    4.TCP端口扫描方式

    5.TIME_WAIT、CLOSE_WAIT

    6.守护进程

    7.迭代器的++it和it++哪个好

  43. 讲讲快速排序的思想。

    我 balabala

  44. 讲讲归并排序的思想。

    我 balabala

  45. 如果给你 一亿个数字,找出最大的前 20 个。(TOP K 问题)
  46. 如果我只要第二十个怎么优化。
  47. 如果给你一个文件,文件里有上亿个无序字符串,设计一个算法把上亿个字符串进行排序。接着把这个有序的字符串输入到一个新的文件当中。(内存有限制)
  48. 让我讲讲我理解的线程。
  49. 多线程对公共资源同时访问。(线程安全,同步互斥)
  50. 问我了解没了解过递归锁。
  51. C++ 11 有没有了解,讲讲。
  52. 讲讲虚函数、纯虚函数。
  53. 你懂 java 吗? (楼主是真的不懂。面试官也就没深问。)
  54. 一个函数返回值为 bool 类型。但是返回 true 与 false 的概率不是百分之五十对百分之五十。要求利用这个函数设计一个新函数,使得新函数的返回值的概率为 50%。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注