针对c/c++ 招聘的面试试题
问答
1. 静态函数作用
一 是隐藏功能,对于static修饰的函数和全局变量而言
二 是保持持久性功能,对于static修饰的局部变量而言
2. ++a和a++的区别是什么?
加加a的意思是先加后取值。
A加加的意思是先取值后增加。
3. 什么是指针的指针?
指针的指针是指一个指向指针所在地址的指针。
int a=5, *x=&a, **y=&x;
4. 使用头文件时双引号和尖括号的区别是什么?
使用双引号时,首先要在当前工作目录中查找这个头文件,如果找不到的话就会在内置的include path里面找。
使用尖括号时,只会在当前工作目录中查找这个头文件。
5. 什么时候应该在C程序中使用指针?
1.获取变量的地址
2.为了在C中实现引用传递:指针允许不同的函数共享和修改其局部变量。
3.通过大型结构,以便避免完整复制结构。
4.实现“链接”数据结构,例如链接列表和二进制树。
6. 什么是内存泄漏?为何应避免使用它。开发过程中是否涉及辅助工具检测。
程序员在堆中创建内存而忘记删除它时,就会发生内存泄漏。对于诸如守护程序和服务器之类的程序而言,内存泄漏是特别严重的问题,根据定义它们永远不会终止。
7. const和define的区别
- 数据类型:const修饰的变量有明确的类型,而宏没有明确的数据类型
2.安全方面:const修饰的变量会被编译器检查,而宏没有安全检查
3.内存分配:const修饰的变量只会在第一次赋值时分配内存,而宏是直接替换,每次替换后的变量都会分配内存
4.作用场所:const修饰的变量作用在编译、运行的过程中,而宏作用在预编译中
5.代码调试:const方便调试,而宏在预编译中进行所以没有办法进行调试。
8. 变量内存分配
- 栈区 —— 局部变量
- 堆区 — malloc,free new,delete
- 全局/静态存储区static 全局变量,静态变量,程序运行结束后自动释放
9. 函数指针和指针函数
- 指针函数本质是一个函数,其返回值为指针。
- 函数指针本质是一个指针,其指向一个函数。
算法
1. 假设公司人数有5000人,如何对5000人进行年龄的排序(准确到年)时间复杂度又是多少。
思路,因为考虑到年龄是有具体的范围,最1-100岁的年的进行分类。
2. 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public int mySqrt(int x)
{
// 特殊值判断
if (x == 0) {
return 0;
}
if (x == 1) {
return 1;
}
int left = 1;
int right = x;
while (left < right) {
int mid = left + (right - left + 1) / 2;
if (mid *mid > x ) {
right = mid - 1;
} else {
left = mid;
}
}
return left;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 慕影!
评论

