【校招面经】8道指针面试真题,快来检测自己掌握了几道。

简介: 【校招面经】8道指针面试真题,快来检测自己掌握了几道。

指针面试真题一

给你一段代码,问程序的结果是什么?

1. #include<stdio.h>
2. int main()
3. {
4. int a[5] = { 1, 2, 3, 4, 5 };
5. int* ptr = (int*)(&a + 1);
6. printf("%d,%d", *(a + 1), *(ptr - 1));
7. return 0;
8. }

这道题比较简单,大家稍微思考一下应该就知道了,不理解的看下面哦!

知识点补充:

指针类型决定了指针向前或向后走一步的步长(±整数),单位是字节。详情请看我这一篇文章:

初步拿捏C指针

解题思路:

指针面试真题二

已知结构体大小是20字节,问下列表达式的值分别是多少?

1. #include<stdio.h>
2. struct Test
3. {
4.  int Num;
5.  char* pcName;
6.  short sDate;
7.  char cha[2];
8.  short sBa[4];
9. }*p;
10. //假设p 的值为0x100000。 如下表表达式的值分别为多少?
11. //已知,结构体Test类型的变量大小是20个字节
12. int main()
13. {
14.   printf("%p\n", p + 0x1);
15.   printf("%p\n", (unsigned long)p + 0x1);
16.   printf("%p\n", (unsigned int*)p + 0x1);
17.   return 0;
18. }

解题思路:

指针面试真题三

在小端存储模式下,给出下面一段程序,问输出什么?(vs2019采用的小端存储)

1. #include<stdio.h>
2. 
3. int main()
4. {
5. int a[4] = { 1, 2, 3, 4 };
6. int* ptr1 = (int*)(&a + 1);
7. int* ptr2 = (int*)((int)a + 1);
8. printf("%x,%x", ptr1[-1], *ptr2);
9. return 0;
10. }

知识点补充

这里要补充大小端的概念:

大端字节序存储:当一个数据的低位放到高地址处,数据的高位放到低地址处;

小端字节序存储:当一个数据的低位放到低地址处,数据的高位放到高地址处.

(不了解大小端存储的博主后续会出相应的内容)

解题思路

指针面试真题四

这题不难,不过有小坑哦

1. #include <stdio.h>
2. int main()
3. {
4. int a[3][2] = { (0, 1), (2, 3), (4, 5) };
5. int *p;
6.     p = a[0];
7. printf( "%d", p[0]);
8. return 0;
9. }

知识点补充

逗号表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果,这里需要注意哦,每个表达式都会执行计算,只不过选用最后一个表达式的结果作为整个表达式的结果。了解更多,点击博主的这篇文章:对C语言操作符的再认识

解题思路

指针面试真题五

给出如下程序,问输出什么值?

1. #include<stdio.h>
2. int main()
3. {
4. int a[5][5];
5. int(*p)[4];
6.     p = a;
7. printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
8. return 0;
9. }

知识点补充

指针-指针:

注意哦,使用指针-指针运算的时候,前提是两个指针指向的是同一块内存空间,那何为指向同一块内存空间呢?最典型的例子就是数组。

指针-指针其实表示的是两个指针中间的元素个数,注意哦,不是中间有几个字节。

指针面试真题六

很简单的一道题:

1. #include<stdio.h>
2. int main()
3. {
4. int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5. int* ptr1 = (int*)(&aa + 1);
6. int* ptr2 = (int*)(*(aa + 1));
7. printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
8. return 0;
9. }

解题思路

指针面试真题七

这道题实际上是为下一题过度准备的。

1. #include <stdio.h>
2. int main()
3. {
4.  char* a[] = { "work","at","alibaba" };
5.  char** pa = a;
6.  pa++;
7.  printf("%s\n", *pa);
8.  return 0;
9. }

解题思路

指针面试真题八

注意哦,这道题算是这几道中难度最大的一道,但是有了前一题的思路,这道题也就不再那么难以理解。

1. #include<stdio.h>
2. int main()
3. {
4.  char* c[] = { "ENTER","NEW","POINT","FIRST" };
5.  char** cp[] = { c + 3,c + 2,c + 1,c };
6.  char*** cpp = cp;
7.  printf("%s\n", **++cpp);
8.  printf("%s\n", *-- * ++cpp + 3);
9.  printf("%s\n", *cpp[-2] + 3);
10.   printf("%s\n", cpp[-1][-1] + 1);
11.   return 0;
12. }

解题思路

一开始,在内存中是这么存储的:

相关文章
|
6月前
|
缓存 安全 编译器
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
《C++面试冲刺周刊》第三期聚焦指针与引用的区别,从青铜到王者级别面试回答解析,助你21天系统备战,直击高频考点,提升实战能力,轻松应对大厂C++面试。
622 132
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
|
8月前
|
缓存 NoSQL Java
校招 Java 面试常见知识点及实战案例全解析
本文全面解析了Java校招面试中的常见知识点,涵盖Java新特性(如Lambda表达式、、Optional类)、集合框架高级应用(线程安全集合、Map性能优化)、多线程与并发编程(线程池配置)、JVM性能调优(内存溢出排查、垃圾回收器选择)、Spring与微服务实战(Spring Boot自动配置)、数据库与ORM框架(MyBatis高级用法、索引优化)、分布式系统(分布式事务、缓存应用)、性能优化(接口优化、高并发限流)、单元测试与代码质量(JUnit 5、Mockito、JaCoCo)以及项目实战案例(电商秒杀系统、社交消息推送)。资源地址: [https://pan.quark.cn/s
243 4
|
8月前
|
算法 Java 关系型数据库
校招 Java 面试基础题目解析及学习指南含新技术实操要点
本指南聚焦校招Java面试,涵盖Java 8+新特性、多线程与并发、集合与泛型改进及实操项目。内容包括Lambda表达式、Stream API、Optional类、CompletableFuture异步编程、ReentrantLock与Condition、局部变量类型推断(var)、文本块、模块化系统等。通过在线书店系统项目,实践Java核心技术,如书籍管理、用户管理和订单管理,结合Lambda、Stream、CompletableFuture等特性。附带资源链接,助你掌握最新技术,应对面试挑战。
197 2
|
8月前
|
Java 关系型数据库 MySQL
2025 年互联网公司校招 Java 面试题总结及答案实操示例解析
本项目基于Spring Boot 3与Java 17技术栈,围绕校园招聘常见面试题,提供核心知识点的实操示例。涵盖多线程、RESTful API设计、数据库操作(Spring Data JPA)、事务管理及异常处理等。通过完整代码实现与运行步骤,帮助理解用户管理、线程池配置等实际应用场景。资源包含项目结构、关键代码示例(如User实体类、UserService服务层、ThreadService多线程实现)及数据库迁移脚本,适合深入学习与实践。环境要求:JDK 17+、Maven 3.8+、MySQL 8.0+。
297 3
|
8月前
|
SQL Java 数据库连接
阿里腾讯互联网公司校招 Java 面试题总结及答案解析
本文总结了阿里巴巴和腾讯等互联网大厂的Java校招面试题及答案,涵盖Java基础、多线程、集合框架、数据库、Spring与MyBatis框架等内容。从数据类型、面向对象特性到异常处理,从线程安全到SQL优化,再到IOC原理与MyBatis结果封装,全面梳理常见考点。通过详细解析,帮助求职者系统掌握Java核心知识,为校招做好充分准备。资源链接:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
297 2
|
8月前
|
安全 Java 编译器
Java 校招面试题目合集及答案 120 道详解
这份资料汇总了120道Java校招面试题目及其详细答案,涵盖Java基础、JVM原理、多线程、数据类型、方法重载与覆盖等多个核心知识点。通过实例代码解析,帮助求职者深入理解Java编程精髓,为校招面试做好充分准备。无论是初学者还是进阶开发者,都能从中受益,提升技术实力和面试成功率。附带的资源链接提供了更多学习材料,助力高效备考。
492 3
|
8月前
|
存储 算法 Java
校招 java 面试基础题目及解析
本文围绕Java校招面试基础题目展开,涵盖平台无关性、面向对象特性(封装、继承、多态)、数据类型、关键字(static、final)、方法相关(重载与覆盖)、流程控制语句、数组与集合、异常处理等核心知识点。通过概念阐述和代码示例,帮助求职者深入理解并掌握Java基础知识,为校招面试做好充分准备。文末还提供了专项练习建议及资源链接,助力提升实战能力。
207 0
|
8月前
|
存储 设计模式 算法
校招 Java 面试常见知识点汇总及备考指南
本文全面解析校招Java面试常见知识点,涵盖Java基础、集合框架、多线程并发、JVM等内容。从面向对象特性(封装、继承、多态)到数据类型与包装类,再到字符串处理和关键字用法,逐一剖析。集合框架部分深入讲解List、Set、Map接口及其常用实现类的特性和应用场景。多线程章节探讨线程创建、同步机制及线程池的使用。JVM部分聚焦内存区域、垃圾回收机制和类加载过程。结合实际案例,助你轻松应对校招面试!资源地址:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
200 0
|
编译器 C语言
经典左旋,指针面试题
文章介绍了两种C语言实现字符串左旋的方法,以及如何使用C语言对整数数组进行奇偶数排序。通过实例演示了如何使用函数reverse_part和leftRound,以及在swap_arr中实现数组元素的重新排列。
144 0
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
240 0