没有合适的资源?快使用搜索试试~ 我知道了~
本资料详细记载了C/C++,内存管理,嵌入式Linux,驱动等相关知识,是面试的好帮助手
资源推荐
资源详情
资源评论
1
目录
面试必备 ........................................................................................................................................11
运算符 ............................................................................................................................................11
()[] ! ++ -- &* /%* +- << >> >< &|^ &&|| ?: = += -= , .............................11
一、关键字篇 ................................................................................................................................13
1. Continue..............................................................................................................................13
2. Break ...................................................................................................................................13
3. Return .................................................................................................................................14
4. Goto ....................................................................................................................................14
5. Volatile ................................................................................................................................14
6.Struct(结构体) (和 C++区别,求结构体大小,使用的注意事项).............................14
7.class 和 struct 的区别?......................................................................................................15
8.Union(联合体) .....................................................................................................................15
1. 对于联合体所有的成员都共享一块内存, ...........................................................15
2.联合体 union 和结构体 struct 的区别: ...................................................................15
3.联合体一般可以用来判断大小端问题: .................................................................16
4.大小端转换问题:......................................................................................................16
5.计算占用空间大小问题:..........................................................................................17
9.Enum ....................................................................................................................................19
10.Typedef ..............................................................................................................................19
1.#define 和 typedef 的区别 (宏,关键字,预处理,编译,检查)...................19
注意#define 和 typedef 定义指针的区别 .....................................................................19
typedef int (*funtion)() //表示函数指针,重新命名为 funtion................................19
11.Const (C 中的变量:局部,函数形成,返回值,指针,typedef 的区别,数组大小
定义,case C++:常函数,常对象)..............................................................................20
12.Extern(链接阶段) .........................................................................................................21
13.Register ..............................................................................................................................21
14.Auto ...................................................................................................................................21
15.Static (c 语言:变量、函数 C++:类中变量、类中静态成员函数) ....................21
1.定义变量 .....................................................................................................................22
2.定义函数 .....................................................................................................................24
3.定义类中的静态成员变量(不能在类里面初始化,不占类内存空间,必须定义才
能使用) ........................................................................................................................24
4.定义类中的静态成员函数(只能访问静态成员变量) .............................................25
16.Swicth case.........................................................................................................................25
17.Do while .............................................................................................................................25
18.Sizeof..................................................................................................................................25
1.Sizeof()和 strlen()的区别....................................................................................25
2.求指针大小.................................................................................................................26
3.计算数组大小..............................................................................................................26
4.如何不使用 sizeof 求数据类型字节的大小...............................................................26
#define mysizeof(value) (char*)(&value+1)-(char*)(&value)..........................................26
5.strlen(“ ”) = ? sizeof(“ ”);.........................................................................................26
6.sizeof(a++)....................................................................................................................27
2
19.New/malloc delete/free(指明大小,返回值,初始化)...................................................27
20.左值和右值是什么?........................................................................................................27
21. 什么是短路求值..............................................................................................................28
22.++a 和 a++区别..................................................................................................................29
23.局部变量能不能和全局变量重名?................................................................................30
24. gets 和 scanf 函数的区别(空格,输入类型,返回值) ..................................................31
25. C 语言编译过程中,volatile 关键字和 extern 关键字分别在哪个阶段起作用? .......31
26. Printf()函数的返回值 .......................................................................................................31
27.C 语言中不能用来表示整常数的进制是二进制 ............................................................31
28.char *str1 = “hello”和 char str2[] = “hello” ............................................................31
二. 内存篇 ..................................................................................................................................32
1. 内存分配有几种方式:....................................................................................................32
2. 静态全局存储区...............................................................................................................32
3. 堆上分配 ..........................................................................................................................32
2. 堆和栈有什么区别(申请方式、效率、方向) ............................................................32
3.栈在 c 语言中有什么作用..................................................................................................33
4.c++的内存管理是怎样的....................................................................................................33
5.什么是内存泄漏 .................................................................................................................33
6.如何判断内存泄漏(如何减少内存泄漏) ...........................................................................33
7. 字节对齐问题 ...................................................................................................................34
8.C 语言函数参数压栈顺序是怎样的...................................................................................34
9.C++如何处理返回值 ...........................................................................................................35
10.栈的空间值最大是多少....................................................................................................35
11. 在 1G 内存的计算机中能否 malloc(1.2G)?为什么?..................................................35
12.strcat、strncat、strcmp、strcpy 哪些函数会导致内存溢出?如何改进......................35
13.malloc、calloc、realloc 内存申请函数............................................................................35
14. 内存泄漏(补充)..........................................................................................................36
三、指针和数组 ............................................................................................................................37
1.什么是指针? .....................................................................................................................37
2.什么是指针的类型?..........................................................................................................37
3.什么是指针所指向类型......................................................................................................37
4.指针的值----或者叫指针所指向的内存区或地址 .............................................................37
5.指针本身所占据的内存区..................................................................................................37
8. 函数指针 ...........................................................................................................................38
6.指针的运算 .........................................................................................................................38
7.认识这些指针运算指针的自加..........................................................................................39
9. 指针数组 ...........................................................................................................................40
10. 数组指针和一维数组......................................................................................................41
11. 指针函数 .........................................................................................................................41
12.指针和数组的区别?(类型、赋值、内存、字节大小、修改内容) ........................42
13.什么是野指针?如何产生?如何避免?........................................................................42
14.什么是智能指针 ...............................................................................................................43
15.智能指针的内存泄漏问题是如何解决的?....................................................................43
12. 数组名 num /&num 的区别............................................................................................43
3
13. 二级指针和指针引用......................................................................................................43
21.指针和数组的使用............................................................................................................44
22.有了指针为什么还需要引用............................................................................................44
23.使用指针的好处 ...............................................................................................................44
24.指针常量、常量指针、指向常量的常量指针................................................................44
25.指针和引用的异同,如何转换........................................................................................45
26.sizeof(数组名)和 sizeof(&数组) ........................................................................................45
27. 数组下标是负数的情况..................................................................................................46
28.二维数组 ...........................................................................................................................46
29.指针减指针 .......................................................................................................................47
30.数组作为参数传递............................................................................................................47
31. 数组初始化 .....................................................................................................................47
32. 调用 Free 释放内存后,指针还能用吗.........................................................................48
33. 函数指针 .........................................................................................................................48
44. 指针不能加指针..............................................................................................................49
45. 指针作为函数参数传递问题..........................................................................................49
46.空指针的指向问题............................................................................................................51
47.数组声明和引用的下标....................................................................................................51
48. 二维数组和数组指针......................................................................................................51
四、预处理 ....................................................................................................................................52
1.预处理器标识#error 的目的是什么?...............................................................................52
2.头文件中#ifndef #define #endif..........................................................................................52
3.#define 和 const ..................................................................................................................52
4.typedef 和 define(原理、作用域,对指针操作不同) .................................................53
5.define 的一些坑(缺点): ..............................................................................................53
6.#include<头文件>,#include”头文件”的区别 ...................................................................54
7.定义一个常数,用以表明一年有多少秒(忽略闰年) ..................................................54
8.简述 C++从代码到可执行二进制文件的过程...................................................................54
9.写一个标准宏 MIN,..........................................................................................................55
10.#define sqort(a) ((a)*(a))...................................................................................................55
11. 对指针的操作 .................................................................................................................55
12. 在头文件中是否可以定义静态变量..............................................................................56
13. #和##的作用.....................................................................................................................56
14. 使用宏求结构体的内存偏移地址..................................................................................57
15. 枚举和 define 区别 .........................................................................................................57
16. const 和 define 区别.........................................................................................................57
17. typedef 和 define 区别.....................................................................................................57
18. 宏函数和内联函数的区别..............................................................................................57
19. 如何判断一个整数是有符号还是无符号?..................................................................58
五、 函数 ......................................................................................................................................58
1.说说内联函数和宏函数的区别 (本质,效率,检查)......................................................58
2.内联函数和普通函数的区别(寻址,复制)..................................................................58
3.为什么析构函数必须是虚函数?......................................................................................59
4.为什么 C++默认的析构函数不是虚函数...........................................................................61
4
5.静态函数和虚函数的区别?..............................................................................................61
6.重载和重写(覆盖) ...............................................................................................................61
7.虚函数表具体怎么实现运行是多态?..............................................................................62
8.构造函数有几种,分别什么作用......................................................................................63
9.只定义析构函数,会自动生成哪些构造函数..................................................................64
10.说说一个类,默认会生成哪些函数................................................................................65
11.说说 C++ 类对象的初始化顺序,有多重继承情况下的顺序 ......................................65
12. select 函数 ........................................................................................................................65
13.Fork wait exec 函数 .....................................................................................................68
14.select epoll poll 函数区别 ................................................................................................70
15.变参函数的实现 ...............................................................................................................70
16. 字符输入函数 .................................................................................................................70
17. fseek 函数.........................................................................................................................71
18. 文件位置函数 .................................................................................................................71
六、 面向对象 ..............................................................................................................................72
1.什么是面向对象 .................................................................................................................72
2.面向对象和面向过程的区别..............................................................................................72
3.面想对象的三大特征..........................................................................................................73
4.什么是深拷贝?什么是浅拷贝?......................................................................................74
5.什么是友元? .....................................................................................................................74
6.基类的构造函数和析构函数能不能被继承? .................................................................75
7.什么函数不能声明为虚函数..............................................................................................75
8. vector 的底层实现 .............................................................................................................75
9. vector 和 list 的区别有什么...............................................................................................75
10. 说一说 vector 扩容时发生了什么 .................................................................................76
11. 删除元素导致两者迭代器发生什么变化......................................................................76
12. 如何理解迭代器..............................................................................................................76
13. 容器的迭代器时由什么组成的......................................................................................76
14. 假如给你一个 class,让你去用 class 去实现一个智能指针,你会怎么做? ............76
15. STL 中迭代器有什么用?有指针为何还有迭代器.........................................................76
16. STL 中迭代器是如何删除元素 ........................................................................................77
17. map 和 set 有什么区别?区别又是怎么实现的? ........................................................77
18. STL 的 allocator 有什么作用............................................................................................77
19. STL 中的 MAP 数据如何存放的.......................................................................................77
20. STL 中的 map 和 unordered_map 有什么区别...............................................................77
21. STL 的 resize 和 reserver 的区别 .....................................................................................77
22. 为什么基类的构造函数和析构函数不能被继承 ..........................................................78
23. C++中如何阻止一个类被实例化.....................................................................................78
24. 纯虚函数指的是什么?..................................................................................................78
25. C++中哪些情况只能初始化列表,而不能赋值? .........................................................78
26. 没有参数的函数能不能被重载?..................................................................................78
七、 数据结构与算法...................................................................................................................79
数组篇 ....................................................................................................................................83
1.求两数之和:..............................................................................................................83
5
2. 三数之和 ...................................................................................................................85
3.最小连续数组长度之和------>滑动窗口.....................................................................87
4.最大子数组和.............................................................................................................88
5.原地移除元素..............................................................................................................90
6.【26】. 删除有序数组中的重复项.........................................................................92
7.合并两个有序数组.....................................................................................................93
8.寻找数组的中心下标.................................................................................................94
9.有序数组的平方.........................................................................................................95
1. 排序 ...................................................................................................................................97
1) 直接插入.................................................................................................................97
2)希尔排序----->直接插入的升级版...........................................................................98
1) 冒泡排序 .................................................................................................................100
2) 快速排序.................................................................................................................102
1) 直接选择.................................................................................................................103
2)堆排序 ......................................................................................................................104
队列篇 ..................................................................................................................................109
八、 操作系统 ............................................................................................................................110
1.什么是进程?什么是线程?............................................................................................110
2.进程、线程、协程的区别?............................................................................................110
3.何时使用多进程?何时使用多线程?(考虑优缺点)......................................................111
4.创建进程的方式?............................................................................................................111
5.进程有几种状态?............................................................................................................112
6.进程间通信方式有哪些?...............................................................................................112
7.进程间通信的选择............................................................................................................113
8、什么是僵尸进程、孤儿进程、守护进程?.................................................................113
9.僵尸进程有什么危害?....................................................................................................113
10.线程间通信方法有哪些?..............................................................................................113
11.说说线程,进程同步方式有哪些?..............................................................................114
12.什么是内核线程和用户线程?......................................................................................114
13. 进程调度算法即策略有哪些?....................................................................................114
14.有抢占式和非抢占式的区别..........................................................................................114
15.并发和并行 .....................................................................................................................114
16.进程间的通信中的管道通信实现原理是什么:..........................................................115
17.说说什么死锁,产生的条件,如何解决?..................................................................118
18.单核机械上写多线程程序,是否考虑加锁,为什么? ..............................................118
19.互斥锁机制,互斥锁和读写的区别?..........................................................................119
20.说说什么是信号量,有什么作用?..............................................................................119
21.进程、线程的中断切换的过程是怎样的?..................................................................119
22.多线程和单线程有什么区别,多线程编程要注意什么,多线程加锁需要注意什么?119
23.为什么要创建线程池?线程池的设计思路,线程池中线程的数量由什么确定?..120
24.说说多路 IO 复用技术有哪些,区别是什么? ............................................................120
25.说说多路 IO 复用技术有哪些,区别是什么?...........................................................121
剩余216页未读,继续阅读
资源评论
不知道起个啥名“”
- 粉丝: 530
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功