1、include " " 和<> 区别
include< file >编译程序会先到标准函数库中找文件
include”file” 编译程序会先从当前目录中找文件
include语句一般用来包含标准头文件(例如stdio.h或stdlib.h),因为这些头文件极少被修改,并且它们总是存放在编译程序的标准包含文件目录下。#include“file”语句一般用来包含非标准头文件,因为这些头文件一般存放在当前目录下,你可以经常修改它们,并且要求编译程序总是使用这些头文件的最新版本。
https://blog.csdn.net/weixin_36571185/article/details/78240931
2、static,static局部变量?生命周期?static关键字(全局,局部,成员变量,成员函数)
3、extern externC
4、inline
5、堆和 栈区别
6、new malloc 区别
7、进程线程区别
8、进程间通信
9、一道手撕算法题 平衡数
好像是一个整数 前半部分的数字相加和后半部分的数字相加 是与一样的 比如 1 2 2 1 这种
10、析构函数为什么要用virtual修饰?
11、多态 说了静态多态和动态多态,虚函数表和虚函数指针)
12、谈一下智能指针?
13、不想让别的对象访问本类,应该怎么做?然后自己怎么访问的?(答:将构造函数设置成private,然后将定义一个static 函数用来访问私有的构造函数)
14、基类、派生类调用构造函数、析构函数的顺序,以及一些访问权限问题。
15、熟悉的数据结构吗?然后写一个二叉树的后序遍历,递归,非递归。
16、给一个数组,输出最长的连续数字子串。(一直优化)
17、协程了解过么?
协程是更轻量级的线程。用于解决线程间切换和进程间切换的通病(对内核开销过大),协程各个状态(阻塞、运行)的切换是由程序控制,而不是内核控制,减少了开销。
功能特点:通过应用层程序,记录上下文栈区,实现在程序执行过程中的跳跃执行。由此可以选择不阻塞的部分执行提升运行效率。
18、写代码,链表的插入与删除的题目
https://www.nowcoder.com/discuss/256913?type=post&order=time&pos=&page=1
19、Cpp和C区别,各自的特点
20、C可以做应用程序吗(菜鸡竟然回答的不知道。。。答案是肯定的。。。)
21、知道回调函数吗
22、单例模式有用到过吗
23、C 中为什么要加STL,它的特点,优点
24、经常用到的字符串的函数,标准的
25、你知道可重入函数吗,怎么实现的可重入,你知道static关键字吗,它和可重入有什么关系
26、volotile关键字你知道吗
27、结构体大小计算你知道吗
28、项目中有用到过多线程吗,多线程是自己写的吗,多线程相关的调用接口有哪些
29、定义一个数组A[10],不允许定义其他变量,通过指针方式取出第一个元素(感觉有坑,应该是想问数组名和指针的区别?)
30、二级指针有了解过吗,二级指针存储的内容
31、讲一讲常见的数据结构
32、队列有用到吗(对vector比较熟,,,那你讲一下吧)
33、你上学的过程中有学到数据结构这门课吗?知道图吗?
34、说一下单链表反转的思路
35、树的遍历方式有那些
36、怎么计算二叉树的深度
37、操作系统有学过吗,你知道生产者消费者模型吗?
38、你知道TCB吗?
39、说一下死锁,怎么避免死锁(不知道。。。)
40、你知道同步互斥吗
41、进程间通信了解吗
42、给你出一个编程题,算阶乘
43、驱动代码你有了解过是吗(没有!)
44、你有没有觉得计算机相关的书籍里哪些比较重要,有看过哪些书说一下
45、Python用过哪些比较多的模块/包
46、讲一下python里面的字典
47、期望工作地点
48、说一下同步异步
49、多线程怎么保证数据安全,除了加锁还知道那些
50、项目遇到困难怎么解决
51、Linux用户态内核态有了解过吗
52、对小米的了解
53、C++特性
54、有几种锁
55、操作系统堆和栈什么区别
56、排序算法知道哪些,介绍一下 时间复杂度
57、为什么要加锁
58、C++,多线程
https://www.nowcoder.com/discuss/244500?type=post&order=time&pos=&page=1
59、进程通信,线程同步(说了同步和通信方式后说了生产者消费者)
60、哈夫曼压缩(举了一个例子)
61、介绍二叉树(讲了二叉树,AVL树)
62、Linux的gcc(四个过程以及每一步的指令)
63、QT的信号槽(connect函数)
64、为什么有malloc还要有new(往它们的区别上答)
65、单例模式
66、三次握手和四次分手
67、栈逆序递归
68、手撕循环队列
69、linux检测内存使用情况;
70、linux查看系统的常用命令
71、socket服务端建立过程
72、红黑树插入、红黑树的用途(红黑树没怎么看,旋转那一块没答上来);
73、两道编程:二叉树镜像、集合的所有子集;
74、堆排
75、统计逆序对个数
剑指offer上利用归并的思想将原序列分成前后两个序列,分别统计两个序列中的逆序对个数,再统计两个序列中的逆序对个数,然后再合并继续的思路;我把思想说了之后面试官就让我手写代码,写好之后他看下了应该是对的。
76、STL中的空间配置器,问了为什么自由链表中的是8byte的倍数?
- 问了那个刚开始那道题: 如何在一个队列中记录当前队列的最大值,这个跟那个栈的最小值有点相识,不过这个难一些,我用那个栈的思想说下我的解决思路,然后面试说你确定嚒?我说我看下,然后自己发现了问题,就把自己发现的问题跟面试官讲了下,然后讲了我那个解决方法的思想就是那个栈的最小值演变而来的;之后面试官提示我pop、push、getmax这三个方法都是O(n*lg(n))的时间复杂度,我说用堆嚒?他说堆插入的时间复杂度比较长,我思考了下说做不出来。
- 最后问了那个逆序对个数的时间复杂度,让我手推公式,我也没推出来,然后面试官在我面前手推了一把
https://www.nowcoder.com/discuss/52218?type=post&order=time&pos=&page=2
https://www.nowcoder.com/discuss/52132?type=post&order=time&pos=&page=1