大厂笔试必过!程序设计基本概念避坑指南,这些题 90% 的人栽过
- 2026-10-22 16:02:24
一、高频考点 1:变量作用域与初始化 —— 这些坑别踩!
面试真题
int i = 1;
void main() {
int i = i;
// 问main里的i值是多少?
A. 未定义值 B. 1 C. 编译器报错 D. 0
}
易错答案:B(很多人以为会继承全局变量 i 的值)
正确答案:A
解析:
避坑技巧:
局部变量别用自身初始化,也别依赖全局变量的默认值,声明时明确赋值(比如 int i = 0;)。
全局变量和局部变量同名时,局部变量优先生效,若要使用全局变量,可加::前缀(比如::i)。
二、高频考点 2:函数重载与 extern"C"——C 和 C++ 混编必懂
面试真题
核心答案:
C++ 支持函数重载,编译后会给函数名加参数后缀(比如 void foo (int x) 会变成_foo_int);
C 语言不支持重载,函数名编译后保持原样(比如 void foo (int x) 还是_foo);
加 extern"C" 是告诉 C++ 编译器,按 C 语言的规则编译该函数,避免函数名匹配失败。
延伸考点:
C++ 编译函数名:会包含参数类型、个数信息(支持重载);
C 编译函数名:仅保留函数原名(不支持重载)。
避坑技巧:
三、高频考点 3:代码优化技巧 —— 笔试加分项
面试真题
写法 1:
if(a == 'A') {
a++;
}
写法 2:
if('A' == a) {
a++;
}
正确答案:写法 2 更优
解析:
另一道优化题:
写法 1:
for(i=0;i<8;i++) {
x = i + Y + J*7;
printf("%d",x);
}
写法 2:
S = Y + J*7;
for(i=0;i<8;i++) {
printf("%d",i + S);
}
正确答案:写法 2 更优
解析:
避坑技巧:
条件判断中,把常量放左边(避免赋值错误);
循环内的固定计算(比如表达式、函数调用),尽量提到循环外,减少重复执行。
四、高频考点 4:C 与 C++ 的核心区别 —— 理解设计思路
面试真题
核心答案:
C 是结构化语言:侧重 “算法和数据结构”,适合底层运算、嵌入式开发,核心是 “过程控制”;
C++ 是面向对象语言:侧重 “对象模型”,适合复杂项目(比如带 UI 的软件),核心是 “封装、继承、多态”。
选型建议:
大量运算(比如数值计算、矩阵运算):用 C/C++(性能强),或 Fortran/MATLAB(专业运算场景);
用户界面:用.NET(Windows 环境)或 Java(跨平台),UI 开发效率高;
软件交互:.NET/Java 支持 COM、数据库访问,方便与其他软件对接。
避坑技巧:
五、笔试实战:这些易错点汇总
局部变量未初始化,值是随机的(全局变量默认初始化为 0,局部变量不会);
C++ 中 const 常量必须初始化(比如 const int a = 5; 不能只写 const int a;);
函数重载的条件:参数类型、个数、顺序不同(返回值不同不算重载);
extern"C" 仅用于 C 和 C++ 混编,告诉编译器按 C 规则处理函数名