【C语言】一次让你看透数组的笔试题

技术面试笔试题深度解析:从基础语法到系统设计的反刍学习法 技术面试中的笔试题是评估开发者能力的重要工具,其核心在于考察候选人对计算机科学基础概念的掌握程度。从编程语言的基础语法、核心数据结构与算法,到操作系统原理和特定领域的系统设计,这些题目系统地探测了开发者的知识体系。理解其背后的原理,而非死记硬背答案,是提升技术能力的关键。例如,深入理解哈希表的实现原理与冲突解决机制,不仅能应对“两数之和”这类算法题,更能指导实际工程中缓存与索引的设计。同样,掌握进程与线程的同步机制,是构建高并发、高性能服务的基础。本文以常见的面试题为切入点,探讨如何通过“反刍学习法”——模 阅读详情

      以下内容含金~

       带你掌握数组名与地址的各种关系,克服畏惧数组的心理 !  


目录

一维数组

解析

字符数组

解析

二维数组

解析


一维数组

        你能做出几道?证明一下自己的实力?

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a+0));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(a[1]));
printf("%d\n",sizeof(&a));
printf("%d\n",sizeof(*&a));
printf("%d\n",sizeof(&a+1));
printf("%d\n",sizeof(&a[0]));
printf("%d\n",sizeof(&a[0]+1));

解析

int a[] = {1,2,3,4};

printf("%d\n",sizeof(a));

数组名一定是首元素地址吗?

提示一点,只有以下两种情况出现数组名才表示整个数组,其他情况一律表示首元素地址
1.sizeof(数组名);
2.&数组名;

所以这里表示整个数组,因而求的是整个数组的大小,也就是4个整形的大小,答案是16

printf("%d\n",sizeof(a+0));

注意这里,sizeof()内部数组名没有单独出现,故这里表示首元素的地址,地址的大小是多少呢?

答案是4/8(32位平台/64位平台)

printf("%d\n",sizeof(*a));

首元素地址解引用也就是首元素,是一个整形,所以

答案是4

printf("%d\n",sizeof(a+1));

首元素地址+1 = 下一个地址 因为数组中地址是连续的,故指向下一个元素的地址
但他的本质依然是地址哩~ 所以

答案是4/8

printf("%d\n",sizeof(a[1]));

a[1] == *(a + 1);也就是数组的第二个元素,所以

答案是4

printf("%d\n",sizeof(&a));

注意,这里是取出整个数组的地址,但他终究还是是地址阿~ 所以

答案是4/8

printf("%d\n",sizeof(*&a));

打开你的思维
两种理解方式:
1.取出整个数组的地址,再解引用,相当于找到了整个数组,也就是计算整个数组的大小
2.*与&抵消,相当单独将数组名放入sizeof内部

答案是16
printf("%d\n",sizeof(&a+1));

取出整个数组的地址,+1跳过整个数组,但依然是地址,所以

答案是4/8

printf("%d\n",sizeof(&a[0]));

打开你的思维
两种理解方式:
1.a[0]是数组的第一个元素,取出他的地址
2.&a[0] == &*(a + 0); 这里&*抵消,剩下a + 0,也就是首元素的地址

答案是4/8

printf("%d\n",sizeof(&a[0]+1));

取出数组第一个元素的地址,+1跳过一个元素的地址,指向数组第二个元素的地址,终究还是地址~

答案是4/8

值得注意的是

printf("%d\n",sizeof(&a+1));

跳过整个数组指的是 由

 到+1后的操作

 


字符数组

        你能做出几道?证明一下自己的实力?

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));

printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char arr[] = "abcdef";
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));

printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p[0]));
printf("%d\n", sizeof(&p));
printf("%d\n", sizeof(&p+1));
printf("%d\n", sizeof(&p[0]+1));

printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));

解析

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));

数组名单独放在sizeof内部,求的是整个数组的大小 所以

答案是6

printf("%d\n", sizeof(arr+0));

数组名没有单独放在sizeof内部,表示首元素地址,首元素地址+0还是首元素地址 所以

答案是4/8

printf("%d\n", sizeof(*arr));

首元素地址解引用,得到首元素,是一个字符'a' 所以

答案是1

printf("%d\n", sizeof(arr[1]));

arr[1]表示数组第二个元素,是字符'b' 所以

答案是1

printf("%d\n", sizeof(&arr));

这里取出整个数组的地址,但依旧是地址~ 所以

答案是4/8

printf("%d\n", sizeof(&arr+1));

取出整个数组的地址,+1跳过整个数组,但依旧是地址~ 所以

答案是4/8

printf("%d\n", sizeof(&arr[0]+1));

取出首元素的地址,+1跳过第一个元素,指向数组第二个元素的地址,所以
答案是4/8

------------------------以下是strlen------------------------------

printf("%d\n", strlen(arr));

将首元素的地址给strlen求字符串长度,到'\0'停止
但是数组中真的有放'\0'吗?
实际上,数组里只存放了abcdef这六个字符
所以strlen会一直找啊找,找啊找,直到找到内存中随机初始化的\0截至

答案是 随机数
printf("%d\n", strlen(arr+0));

首元素地址+0还是首元素地址,数组中没有'\0' 所以

答案是 随机数

printf("%d\n", strlen(*arr));

将首元素放进strlen这算什么呀?
什么都不算,这时一种错误的写法
为什么呢?看一下strlen函数的要求:
size_t strlen( const char *string );
他需要的是一个const的指针

想象一下,将字符'a'强行塞入,经ASCII转换后是97,访问的是97处的地址啊
这是一个位置极低的地址,已经造成了非法访问,如果你有兴趣,编译这段代码
程序走到这里就会挂掉

答案是 error
printf("%d\n", strlen(arr[1]));

这个也是同样的道理,只不过是第二个元素

答案是 error

printf("%d\n", strlen(&arr));

取出整个数组的地址,这可怎么办呢?

大家是否还记得取出首元素的地址和取出整个数组的地址是一样的,因为就算你要一次访问
整个数组,起始位置也一定是首元素地址不是吗?

但闹了半天,却因数组里没有'\0' 所以

答案是 随机数

printf("%d\n", strlen(&arr+1));

取出整个数组的地址,+1跳过整个数组,但内存中未初始化的位置内容都是随机的 所以

答案是 随机数-6

printf("%d\n", strlen(&arr[0]+1));

取出首元素的地址,+1指向第二个元素 所以

答案是 随机数-1
char arr[] = "abcdef";
printf("%d\n", sizeof(arr));

这里arr单独出现在sizeof内部,表示计算整个数组的大小,但要注意哦
这里的字符串里隐藏了一个'\0' 所以

答案是7

printf("%d\n", sizeof(arr+0));

arr没有单独出现在sizeof内部,表示首元素地址 所以

答案是4/8

printf("%d\n", sizeof(*arr));

首元素地址解引用得到数组第一个元素,是字符'a' 所以

答案是1

printf("%d\n", sizeof(arr[1]));

arr[1]表示数组的第二个元素,是字符'b' 所以

答案是1

printf("%d\n", sizeof(&arr));

取出整个数组的地址,但依然是地址 所以

答案是4/8

printf("%d\n", sizeof(&arr+1));

取出整个数组的地址,+1跳过整个数组,但依然是地址, 所以

答案是4/8

printf("%d\n", sizeof(&arr[0]+1));

取出首元素的地址,+1指向第二个元素,但依然是地址~ 所以
答案是4/8

--------------------以下是strlen----------------------------

printf("%d\n", strlen(arr));

strlen读到'\0'停止,这里arr表示首元素的地址,表示从首元素开始读取 所以

答案是6

printf("%d\n", strlen(arr+0));

首元素地址+0还是首元素地址 所以

答案是6

printf("%d\n", strlen(*arr));

首元素地址解引用放入strlen,上面的题解释过,造成了非法访问,这是一种错误写法,所以

答案是error

printf("%d\n", strlen(arr[1]));

arr[1]是首元素和上一题同理 所以

答案是error

printf("%d\n", strlen(&arr));

取出整个数组的地址,整个数组的地址也是从首元素地址开始访问 所以

答案是6

printf("%d\n", strlen(&arr+1));

取出整个数组的地址,+1跳过整个数组,相当与也跳过了数组结尾的'\0' 所以

答案是 随机数

printf("%d\n", strlen(&arr[0]+1));

取出首元素的地址,+1指向数组第二个元素 所以

答案是5
char *p = "abcdef";
printf("%d\n", sizeof(p));

char*类型的p能存放的了这个字符串吗?
当然不行(具体在指针进阶文章里有讲)
这里存放的首元素a的地址 所以

答案是4/8

printf("%d\n", sizeof(p+1));

p是首元素的地址,首元素地址+1指向下一个元素的地址,但还是地址~ 所以

答案是4/8

printf("%d\n", sizeof(*p));

首元素地址解引用找到字符'a' 所以

答案是1

printf("%d\n", sizeof(p[0]));

p[0] == *(p + 0);表示第一个元素 所以

答案是1

printf("%d\n", sizeof(&p));

p表示首元素地址,&p表示取出首元素地址的地址,相当于一个二级指针,但还是地址~ 所以

答案是4/8

printf("%d\n", sizeof(&p+1));

取出首元素地址的地址,+1跳过p这块空间的地址(此处一会画图解释),但还是地址~ 所以

答案是4/8

printf("%d\n", sizeof(&p[0]+1));
取出首元素的地址,+1跳过第一个元素的地址,指向第二个元素地址,但还是地址~ 所以
答案是4/8

---------------------------以下是strlen-----------------------------------

printf("%d\n", strlen(p));

p是首元素地址,strlen计算字符串长度到'\0'停止 所以

答案是6

printf("%d\n", strlen(p+1));

首元素地址+1,指向下一个元素的地址 所以

答案是5

printf("%d\n", strlen(*p));

首元素地址解引用,得到的是首元素,是一个字符'a',和之前的一道题一样,非法访问内存空间 所以

答案是error

printf("%d\n", strlen(p[0]));

和上一题同理 所以

答案是error

printf("%d\n", strlen(&p));

p表示首元素地址,&p表示取出首元素地址的地址,但后面内容是随机初始化(一会画图解释) 所以

答案是 随机值

printf("%d\n", strlen(&p+1));

和上一道题同理,&p+1只是跳过了这个p的地址,后面内容随机初始化 所以

答案是 随机数

printf("%d\n", strlen(&p[0]+1));
取出首元素的地址,+1指向第二个元素的地址,所以

答案是5

对于

printf("%d\n", sizeof(&p+1));

printf("%d\n", strlen(&p+1))

p这个指针变量与"abcdef"的存储位置是不一样的

p是一个局部变量,在栈区上开辟空间,而常量字符串"abcdef"是在静态区开辟的空间

如图:

 +1跳过的是什么呢

如图

 想必这时大家心里因该很清楚啦。


二维数组

        你能做出几道?证明一下自己的实力?

int a[3][4] = {0};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a[0][0]));
printf("%d\n",sizeof(a[0]));
printf("%d\n",sizeof(a[0]+1));
printf("%d\n",sizeof(*(a[0]+1)));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(*(a+1)));
printf("%d\n",sizeof(&a[0]+1));
printf("%d\n",sizeof(*(&a[0]+1)));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a[3]));

解析

int a[3][4] = {0};
printf("%d\n",sizeof(a));

数组名单独放在sizeof内部,表示计算整个数组大小,也就是12个整形大小 所以

答案是48

printf("%d\n",sizeof(a[0][0]));

a[0][0] == *(*(a + 0) + 0); 就是第一行第一个元素 所以

答案是4

printf("%d\n",sizeof(a[0]));

a[0] == *(a + 0);这里a表示数组第一行的地址,+0还是第一行,解引用相当于拿到
第一行的数组名,将第一行的数组名单独放入sizeof内部,相当于计算第一行的大小,
(这里这一类比一维数组) 所以

答案是4

printf("%d\n",sizeof(a[0]+1));

与上一道题同理,a[0]拿到第一行的数组名,数组名没有单独放在sizeof内部表示
第一行的首元素地址,第一行首元素的地址+1,指向第一行第二个元素的地址,但还是地址 所以

答案是4/8

printf("%d\n",sizeof(*(a[0]+1)));

与上一道题同理a[0]+1表示第一行第二个元素的地址,解引用相当于找到了第一行第二个元素,是个整形

答案是4

printf("%d\n",sizeof(a+1));

a表示首元素地址,+1跳过第一行的地址,指向第二行的地址,但还是地址~

答案是4/8

printf("%d\n",sizeof(*(a+1)));

与上一题同理,a+1表示第二行地址,第二行的地址解引用相当于找到了第二行的数组名,第二行
数组名单独放入sizeof内部表示计算第二行的数组大小 所以

答案是16

printf("%d\n",sizeof(&a[0]+1));

a[0]表示一行的数组名,&a[0]表示取出第一行数组名的地址,+1指向第二行的数组名的地址 所以

答案是4/8

printf("%d\n",sizeof(*(&a[0]+1)));

与上一题同理,&a[0]+1表示第二行的地址,解引用相当于找到了第二行的数组名,数组名单独放入sizeof
内部,表示计算第二行的大小

答案是16

printf("%d\n",sizeof(*a));

a没有单独放入sizeof内部表示第一行的地址,第一行的地址解引用拿到第一行的数组名,第一行的
数组名单独放入sizeof计算数组第一行的大小 所以

答案是16

printf("%d\n",sizeof(a[3]));

这道题很有意思
可能有的就要说了,这一看就是错的呀,越界访问了~
但其实你可能忘了一点
sizeof只关心的是类型,而非内容
你是否有见过这种写法sizeof(int)
起始就是在计算int的大小,包括平时写int a = 5; sizeof(a);
这也是在计算a这个类型的大小
这道题a[3]就是拿到第四行的数组名,数组名单独放入sizeof内部表示计算数组第四行的大小 所以

答案是16

       


不断揭示数组名的意义和本质:

1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。

2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。

3. 除此之外所有的数组名都表示首元素的地址。

码字不易~

腾讯暑期实习生笔试题复盘:构造回文、字符移位与有趣的数字 算法面试中,动态规划和字符串处理是高频考点,而大厂笔试往往通过看似基础的题目考察候选人对问题本质的理解。例如,构造回文问题本质是最长回文子序列(LPS),可通过逆序串LCS或区间DP求解;字符移位则考察稳定分区思想,需保持同类字符相对顺序;有趣的数字则借助排序将差值问题转化为相邻元素分析。掌握这些通用概念与原理,不仅能应对笔试,更能提升工程实践中的算法设计能力。从LeetCode刷题到牛客网在线笔试,理解边界条件与复杂度优化才是关键。本文以腾讯2017暑期实习生笔试题为例,完整拆解三道经典题目的推导过程、代 阅读详情

相关推荐

掌阅科技2023秋招算法岗笔试复盘:考点、编程题与场景题解析

在算法岗笔试中,基础算法与机器学习理论是考察重点,其中字符串匹配算法(如KMP)和推荐系统是高频考点。理解其原理不仅有助于解决编程题,更能体现对业务场景的思考。一场数字阅读公司的算法笔试复盘,从KMP的next数组推演到排序、快速幂等基础实现,再到机器学习中的KNN、聚类及Transformer等模型,并分析推荐系统冷启动、文本处理等场景题。通过细致的考点拆解与避坑指南,帮助求职者掌握笔试的答题框架与复习策略,实现从理论到实践的转化。

weixin_34006965的博客 503

C语言基础编程练习(精选例题+题解)

目录 1.求最大公约数和最小公倍数 2.打印图形 3.质数因子 4.数字排序 5.十进制数转换为八进制数(进制转换) 6.寻找完数 1.求最大公约数和最小公倍数 题目描述:输入两个正整数m和n,求其最大公约数和最小公倍数。 输入:输入为一行,包括两个数字,以空格隔开。 输出:输入应为两行,第一行为最大公约数,第二行为最小公倍数。 样例输入: 2 3 样例输出: 1 6 解题思路: 1.求最大公约数时,先找出输入的两个数中小的那一个,从该数开始,依次-1,判断..

qq_58284486的博客 3万+

快手工程A试卷考点拆解:算法、网络与高并发备考指南

大厂校招笔试向来是筛选技术人才的第一道关口,工程方向岗位尤其看重算法基础、计算机体系与并发实战能力。从数据结构与算法的经典题型,到TCP/IP、操作系统进程线程等核心原理,笔试考察的并非孤立的记忆,而是将知识映射到高并发、分布式等真实业务场景中的工程素养。对于后端、客户端、基础架构等岗位的求职者而言,理解网络通信、内存管理、缓存与消息队列等技术在短视频、直播等亿级流量产品中的落地方式,往往比盲目刷题更有效。快手秋季校园招聘工程A试卷正是这类考察思路的典型样本,它覆盖算法编程题、计算机网络、操作系统、数据库、

weixin_34109408的博客 324

C语言-基础例题55道

编程写程序,在屏幕上输出信息:Happy New Year!由键盘任意输入2个数,分别计算它们的和、差、积、商。已知梯形的上底、下底和高,计算梯形的面积。任意输入一个字符,输出此字符对应的ASCII码。

行秋的博客 7万+

Nengo神经工程框架:脉冲神经网络的实时编译与硬件部署

脉冲神经网络(SNN)作为类脑计算的核心范式,正从生物模拟走向工程落地。其本质是用离散脉冲建模神经动力学,关键在于实现可预测、可复现的神经行为而非单纯拟合函数。Nengo基于神经工程学框架(NEF),将动态系统理论与硬件约束深度融合,通过解析式权重计算、确定性时间步长(dt)和多后端编译能力,支撑从CPU仿真到Loihi/FPGA的端到端部署。它不替代深度学习框架,而是提供面向神经形态芯片的‘神经编译器’能力,使LIF神经元参数、突触动力学与硬件时序严格对齐,显著提升实时性、能效比与物理可解释性。

weixin_32533659的博客 635

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6726

C基础:45道练习题汇总(初学者加油)

本文汇总了c基础阶段所有的练习题,有需要的可以参考下

weixin_57535837的博客 3万+

企业微信微盘API权限避坑指南:为什么你的Python脚本无法获取文件列表?

本文深入解析了企业微信微盘API的权限模型,解释了为何即使使用超级管理员账号,Python脚本也可能因权限不足而无法获取文件列表。核心在于微盘API基于“应用身份”而非“用户身份”进行校验,应用只能访问自身创建的空间。文章提供了构建文件上传代理、利用事件回调等合规的替代方案,帮助企业实现高效数据同步。

weixin_29322553的博客 523

C语言——经典200道实例【基础例题100道——进阶例题100道】

目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!" 2.输出整数 3.输出单个字符 4.输出浮点数 5.输出双精度(double)数 6.两个整数相加 7.两个浮点数相乘 8.字符转 ASCII 码 (1)一次读取长字符,并一个一个显示...

刘鑫磊 28万+

MySQL根据idb文件恢复数据

恢复前提 MySQL 5.* 和 8.* 的恢复方式大同小异,最基本的区别是8.* 中,不再有表结构frm文件,所以要恢复 8.* 的数据,就必须要有完整的建表语句。 而恢复 5.* 的数据,就需要idb文件和 frm文件,当然,如果有完整的建表语句的话,不用frm文件也行。 恢复步骤 需要注意的是,以下操作需要选定数据库后执行。 5.* 恢复表结构 确定表列数 首先创建一张 与需要恢复数据的表 的名字相同的新表,如果已知原表的字段数量的话,就按照原表字段数建表,字段名和类型都不用考虑,如果不知道数量的话,

weixin_45121446的博客 5447

问题:dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

 1. 问题:Ubuntu安装软件的过程中出现依赖项的问题 “E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).” 按照指示执行如下两条命令都没有解决问题。 sudo apt-get -f install sudo apt-get --fix-broken ...

gloria_littlechi的博客 2万+

C语言实现温度转换

C语言实现温度转换 例1:有人用温度计测量出用华氏温度98°F,现在要求用C语言实现把它转换为以摄氏法表示的温度。 解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是: centigrade=(5.0/9)*(f_Degree-32); 源代码演示: #include<stdio.h>//头文件 int main() //主函数 { float f_Degree,centigrade; //定义浮点型变量 f_

weixin_48669767的博客 8783

骚戴笔记公告

骚戴笔记公告

我从不打没有准备的仗! 2万+

【C语言】一次让你看透指针笔试题

以下内容含金~ 带你掌握指针,克服畏惧笔试题的心理 ! 目录指针与一维数组解析指针与二维数组解析指针与结构体解析二级指针解析三级指针解析 实践出真知,你对指针了解多少? 解析 最后要注意,你以小端存储看内存*ptr2是00 00 00 02,以%x的形式打印他,要继续用小端存储的视角,也就是再倒着拿出来,即2 00 00 00 (2前面的0可以省略) 实践出真知,你对指针了解多少? 解析 实践出

CYK_byte的博客 329

王者荣耀AI绝悟如何选英雄?

王者荣耀AI绝悟如何选英雄? 【抢射手?抢中单位?「绝悟」在打王者荣耀时是如何选英雄的?】 腾讯 AI Lab 开发的 AI 智能体「绝悟」已让王者峡谷不再只是人类召唤师的竞技场,而且这个 AI 战队在上月底进化成了「完全体」。在一局完整的比赛中,英雄选择阶段是至关重要的(比如五射手或五法师阵容会有官方劝退)。 近日,腾讯 AI Lab 和上海交通大学发布的一篇论文介绍了绝悟的英雄选择策略:Ju...

不断学习,不断进步,提高自己 1万+

【数据同化第二期】数据同化中三大理论基础之一(最小方差估计)

【数据同化第二期】深入理解数据同化及经典案例(最小方差估计)

WW、forever的博客 1596

游戏大厂C/C++校招笔试核心考点与备考策略

C/C++作为游戏引擎开发的核心语言,其底层机制——内存布局、虚函数多态、STL容器行为——是校招笔试的高频考点。游戏公司不仅考察语法,更注重候选人对内存对齐、RAII、迭代器失效等工程细节的理解。笔试算法题通常设有严格时间限制(如C/C++ 1000ms),要求开发者掌握最优解法和高效的本地环境配置,例如使用VS Code搭配MinGW-w64搭建调试工具链。从C转C++的开发者尤其需要突破面向过程思维,建立RAII、数据驱动等现代C++工程理念。本文结合搜狐畅游真题,系统梳理笔试核心模块、代码阅读与改错

weixin_30256901的博客 377

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

淘天算法岗笔试复盘:核心考点与实战策略

在算法岗求职中,扎实的数据结构与经典算法是基石。KMP算法通过next数组避免重复匹配,将字符串匹配复杂度优化至线性,是搜索引擎与文本处理的核心技术;动态规划则强调状态定义与边界处理,在路径优化、资源分配等场景中应用广泛。贪心、堆排序与快速幂则体现了对资源最优利用的思维,Top-K问题和快速幂运算在真实业务中有着直接对应。机器学习理论同样不可忽视,损失函数设计与优化方法选择彰显算法工程师的基本功。本文从这些基础概念与技术原理出发,结合淘天算法岗第二批笔试的真实考点,分析高频算法背后的逻辑与工程价值,并给出备

weixin_33796177的博客 425

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

23年最后一个月,看看华为OD面试者 “年底” 如何冲一波

三轮面试虽然强度很高,而且中场时间很短,但是体验感还是非常好的,12 号下午三点开始线上第一场面试,4 点准时结束,然后十分钟后开始第二场,同样是一个小时结束,过了十分钟就开始主管面试,三位面试官都很尊重人,而且也没有很为难别人,都是抓着简历上面的内容在问,也没有出现压力面试的情况。前两轮面试结束后,很快就出结果了,主管面试结束后是第二天晚上出的结果,不说了,开泡。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1409

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

京东研发工程师编程题解析:算法基础与笔试实战策略

在技术岗笔试中,字符串处理、数据结构与动态规划是最高频的基础考察方向。它们的核心原理并不复杂:字符串需关注索引边界与状态维护,数据结构重在理解栈、队列、优先队列的底层特性,动态规划则强调通过记忆化优化递归中的重复子问题。掌握这些基础算法的技术价值,不仅在于能快速解决题目,更在于为海量数据场景下的性能优化提供工程化思路。无论是滑动窗口解决子数组问题,还是用堆处理Top-K与多路归并,都是实际开发中常用的手段。理解这些概念后,再回看经典的京东2016研发工程师编程题(二),你会发现其中每一道题都是对这些基本功的

weixin_34341229的博客 349

研发工程师校招笔试全解析:从网易真题看算法与基础考察

研发工程师校招笔试是检验计算机基础与编程能力的核心关卡,其中数据结构与算法、操作系统、计算机网络、数据库等模块构成了考察知识体系的主体。笔试通过算法题与基础题,考察候选人是否具备扎实的底层原理理解、严谨的逻辑思维和高效的编码习惯——这些能力决定了未来能否胜任复杂工程问题。在竞争激烈的互联网求职场景中,针对性刷题与三轮复习法能显著提升备考效率,而复盘错题、理解原理而非死记硬背,更是高分关键。以网易有道研发岗笔试卷为例,其题型设计覆盖了典型考点与高频失分陷阱,为校招求职者提供了极具参考价值的实战范本。

weixin_30279671的博客 359

同盾科技开发岗笔试复盘:核心考点与答题策略

在金融科技领域,扎实的后端工程能力与风控业务理解同等重要。以Java集合框架、并发机制、TCP/IP协议、操作系统进程模型等基础概念为起点,笔试往往通过多选与场景包装考察原理级认知,例如fork写时复制、HashMap红黑树退化条件、缓存穿透与击穿的区别。数据结构方面,前缀和、贪心排序与树上动态规划是高频算法模型,而SQL窗口函数和Kafka分区分配策略则体现数据工程能力。这些知识不仅用于构建高并发、低延迟的实时风控决策系统,也是金融级应用在性能、一致性与可靠性上的技术基石。同盾科技开发岗笔试正是围绕上述核

weixin_30613727的博客 408

微软校招笔试卷B深度拆解:数据结构与算法基本功

数据结构与算法复杂度是研发岗位笔试的核心考察点。理解栈、链表、二叉树等结构的适用场景,掌握递归与递推关系下的复杂度分析,是高效解题的前提。操作系统与计算机网络等基础科目同样决定成败。微软校招笔试B卷正是围绕这些核心知识设计,通过选择题与编程题检验扎实的基本功和边界敏感度。本文以2014年微软研发工程师笔试卷B为主线,逐类拆解题型与考察逻辑,并结合相邻重复字符消除等典型编程题演示栈的优化解法,为准备外企校招的读者提供复习方向。

weixin_33923762的博客 408

C语言基础题练习10道

第三个人按下所有编号是3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关掉);依次类推,一共有k个人,问最后有哪些灯开着,输入n和k,输出开着的灯的编号。斐波那契数列指的是这样一个数列0,1,1,2,3,5,8,13,特别指出第0项是0,第1项是第一个1。2个羽毛球队比赛,各出3人,每个人只比一次,甲队为A、B、C三人,乙队为X、Y、Z三人,有人打听比赛名单,A说他不和X比,C说不和。反向思路,输出第a项时,保存第a+1、a+2项的值。...

weixin_43325374的博客 9643

C语言入门(15道经典题目)

Q1:将秒化成时钟标准形式 #include<stdio.h> int main() { int n=0,a=0,b=0,c=0,k=0,j=0; scanf("%d",&n); a=n/3600; b=n%3600/60; c=n%3600%60; printf("%d %d %d",a,b,c); return 0; } Q2:求五个数的平均数 #include<stdio.h> int main() {...

DENGGELADENG的博客 1万+

C语言测试题(附有详细解析)

1.运行结果是啥? fib函数每递归一次cnt就+1 fib就是把大于等于1的数拆成两个数之和,也就说只要fib的变量不是0或1,他就要拆一次,挨着数出来就行了 结果是67 2.这个代码的运行结果是? x后置++,第一次先打印1 然后x变成了2进入判断语句进行判断,判断的时候用的是2 后置--x变成了1,然后又回去,导致打印的结果一直都是1 判断条件一直都是2 所以运行结果为陷入死循环 3.下面代码的运行结果为? int i=1; int j; j=i++; 答:把i的值也

2301_76771985的博客 2万+
上一篇: 【C++】引用、内联函数、函数重载、函数默认参数(缺省参数)与占位参数、extern “C“ 浅析
下一篇: 【C语言】一次让你看透指针笔试题
陈亦康
陈亦康 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄5年 6万+粉丝 388原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值