c语言技术面试记录 ---- 纲要、题目、分析及给分标准
纲要
作为一个面试官,除了编程类的问题,你还可以考虑问一些关于技术知识、项目经验、解决问题能力和团队合作等方面的问题,以全面评估应聘者的能力和适应性。以下是一个可能的提问逻辑和大纲,供你参考:
技术知识和基础问题
- C语言以外,你是否还熟悉其他编程语言?
- 请谈谈指针和引用的区别是什么,以及在什么情况下你会选择使用它们?
- 什么是内存泄漏?如何避免内存泄漏的发生?
- 你是否了解数据结构和算法?请谈谈你熟悉的一些常见数据结构和它们的应用场景。
项目经验和实际应用
- 请分享一个你在学习过程中或个人项目中遇到的挑战,并描述你是如何解决它的。
- 你是否在团队中参与过开发项目?请谈谈你在团队中的角色以及如何协调工作。
- 你是否了解版本控制系统(如Git)?在团队协作中,你如何处理代码冲突和合并?
解决问题和逻辑思维
- 如果你遇到一个性能问题,你会如何去排查和解决?
- 当你遇到一个复杂的bug,但没有明确的错误信息时,你会采取什么步骤来定位问题所在?
- 请分享一个你通过分析和创造性思考解决问题的经历。
团队合作和沟通能力
- 在之前的团队项目中,你是如何与其他成员合作的?你如何解决团队中的分歧或冲突?
- 在团队中,如何保持有效的沟通,以确保每个人都在同一页面上?
个人发展和兴趣
- 除了编程,你还有什么兴趣爱好?你在业余时间都在学些什么?
- 你对于学习新技术或领域有何计划?
以上大纲可以帮助你全面了解应聘者的技术知识、实际经验、解决问题的能力以及团队合作和沟通能力。根据具体的职位要求和公司文化,你可以调整问题的重点和深度。此外,还可以针对应聘者的回答深入提问,以更好地了解他们的思维过程和能力。
c语言笔试题
题目一:基本语法和控制结构
-
编写一个程序,输入一个整数,判断该整数是奇数还是偶数,并输出相应的信息。
-
编写一个循环,计算并输出1到100之间所有能被3整除但不能被5整除的数的和。
题目二:数组和指针
-
声明一个整型数组,包含5个元素,然后编写代码实现数组元素的逆序排列。
-
编写一个函数,接受一个整型数组和数组的长度作为参数,返回数组中的最大值。
题目三:函数和字符串处理
-
编写一个函数,接受一个字符串作为参数,返回该字符串中的字符个数(不包括结尾的空字符)。
-
编写一个函数,接受两个字符串作为参数,判断第一个字符串是否是第二个字符串的子串,如果是,则返回子串第一次出现的位置,否则返回-1。
题目四:结构体和文件操作
-
声明一个表示学生的结构体,包含学生的姓名、年龄和成绩。然后编写代码,从文件中读取多个学生的信息,并计算他们的平均成绩。
-
编写一个函数,接受一个学生结构体的数组和数组长度作为参数,按照成绩降序对学生进行排序,并输出排序后的结果。
题目五:动态内存分配
-
编写一个程序,接受用户输入的一个正整数n,动态分配一个整型数组,然后逐个输入n个整数到数组中,最后计算并输出这些整数的平均值。
-
扩展上述程序,除了计算平均值外,还要找出输入的n个整数中的最大值和最小值,并输出它们。
这些题目涵盖了C语言的一些基本概念和常见操作。希望这些题目能够帮助应届生们巩固他们的C语言知识。
这些题目对于评估应聘者的C语言编程能力是相当合适的,尤其是针对大学本科或研究生级别的应届生。这些题目涵盖了C语言的基本语法、控制结构、数组、指针、函数、字符串处理、结构体、文件操作和动态内存分配等方面的知识点,能够很好地测试应聘者的编程基础和逻辑思维能力。
如果你希望进一步深入考察应聘者的能力,你还可以考虑增加一些稍微复杂一点的题目,涵盖更多的高级特性,比如多文件编程、指针的高级应用、递归、位操作等等。不过,这些题目已经涵盖了大部分C语言的基本和常用知识,足以评估应聘者的编程水平。
如果时间允许,你也可以考虑添加一些编程练习题,让应聘者在实际问题中应用他们的C语言知识,从而更全面地了解他们的能力。
总之,你可以根据招聘职位的要求和考察的重点,酌情增减题目。这些题目应该能够帮助你评估应聘者的C语言编程水平和解决问题的能力。
标准答案 & 给分标准
题目一:基本语法和控制结构
1. 标准答案和分析:
#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;
}
给分标准:
- 正确判断奇偶数并输出相应信息:5分
- 正确使用
if语句:3分 - 正确输入输出:2分
2. 标准答案和分析:
#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 3 == 0 && i % 5 != 0) {sum += i;}}printf("结果:%d\n", sum);return 0;
}
给分标准:
- 正确计算并输出1到100之间符合条件的数的和:8分
- 正确使用
for循环:2分
题目二:数组和指针
1. 标准答案和分析:
#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5 / 2; i++) {int temp = arr[i];arr[i] = arr[4 - i];arr[4 - i] = temp;}printf("逆序排列后的数组:");for (int i = 0; i < 5; i++) {printf("%d ", arr[i]);}return 0;
}
给分标准:
- 正确逆序排列数组元素:8分
- 正确使用
for循环:2分
2. 标准答案和分析:
#include <stdio.h>int findMax(int arr[], int length) {int max = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;
}int main() {int arr[] = {23, 45, 12, 67, 89};int length = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, length);printf("最大值:%d\n", max);return 0;
}
给分标准:
- 正确找到数组中的最大值并返回:8分
- 正确使用函数:2分
题目三:函数和字符串处理
1. 标准答案和分析:
#include <stdio.h>
#include <string.h>int countCharacters(char str[]) {return strlen(str);
}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int count = countCharacters(str);printf("字符个数:%d\n", count);return 0;
}
给分标准:
- 正确计算字符串中的字符个数:8分
- 正确使用函数:2分
2. 标准答案和分析:
#include <stdio.h>
#include <string.h>int findSubstring(char str[], char sub[]) {char *ptr = strstr(str, sub);if (ptr != NULL) {return ptr - str;} else {return -1;}
}int main() {char str[100], sub[100];printf("请输入主字符串:");scanf("%s", str);printf("请输入子字符串:");scanf("%s", sub);int pos = findSubstring(str, sub);if (pos != -1) {printf("子字符串在位置:%d\n", pos);} else {printf("子字符串不存在\n");}return 0;
}
给分标准:
- 正确判断子字符串是否是主字符串的子串:8分
- 正确返回子串在主串中的位置或返回-1:2分
- 正确使用函数:2分
题目四:结构体和文件操作
1. 标准答案和分析:
#include <stdio.h>struct Student {char name[50];int age;float score;
};int main() {FILE *file = fopen("students.txt", "r");if (file == NULL) {printf("无法打开文件\n");return 1;}struct Student students[100];int count = 0;while (fscanf(file, "%s %d %f", students[count].name, &students[count].age, &students[count].score) != EOF) {count++;}fclose(file);float totalScore = 0.0;for (int i = 0; i < count; i++) {totalScore += students[i].score;}float averageScore = totalScore / count;printf("平均成绩:%f\n", averageScore);return 0;
}
给分标准:
- 正确读取文件中的学生信息:8分
- 正确计算平均成绩:6分
- 正确使用结构体:3分
- 正确文件操作和输入输出:3分
2. 标准答案和分析:
#include <stdio.h>
#include <string.h>struct Student {char name[50];int age;float score;
};int compare(const void *a, const void *b) {return ((struct Student *)b)->score - ((struct Student *)a)->score;
}int main() {struct Student students[5] = {{"Alice", 21, 85.5},{"Bob", 22, 76.2},{"Carol", 20, 92.0},{"David", 23, 78.8},{"Eve", 21, 89.7}};int count = sizeof(students) / sizeof(students[0]);qsort(students, count, sizeof(struct Student), compare);printf("按成绩降序排序后的学生信息:\n");for (int i = 0; i < count; i++) {printf("姓名:%s,年龄:%d,成绩:%f\n", students[i].name, students[i].age, students[i].score);}return 0;
}
给分标准:
- 正确使用结构体存储学生信息:5分
- 正确排序学生信息并输出:10分
- 正确使用
qsort函数和自定义比较函数:5分
题目五:动态内存分配
1. 标准答案和分析:
#include <stdio.h>
#include <stdlib.h>int main() {int n;printf("请输入整数个数:");scanf("%d", &n);int *arr = (int *)malloc(n * sizeof(int));if (arr == NULL) {printf("内存分配失败\n");return 1;}int sum = 0;for (int i = 0; i < n; i++) {printf("请输入第%d个整数:", i + 1);scanf("%d", &arr[i]);sum += arr[i];}float average = (float)sum / n;printf("平均值:%f\n", average);free(arr);return 0;
}
给分标准:
- 正确分配动态内存:5分
- 正确输入并计算平均值:5分
- 正确释放内存:2分
2. 标准答案和分析:
#include <stdio.h>
#include <stdlib.h>int main() {int n;printf("请输入整数个数:");scanf("%d", &n);int *arr = (int *)malloc(n * sizeof(int));if (arr == NULL) {printf("内存分配失败\n");return 1;}int max = -2147483648; // 初始值为最小整数int min = 2147483647; // 初始值为最大整数for (int i = 0; i < n; i++) {printf("请输入第%d个整数:", i + 1);scanf("%d", &arr[i]);if (arr[i] > max) {max = arr[i];}if (arr[i] < min) {min = arr[i];}}float average = 0.0;int sum = 0;for (int i = 0; i < n; i++) {sum += arr[i];}average = (float)sum / n;printf("最大值:%d,最小值:%d,平均值:%f\n", max, min, average);free(arr);return 0;
}
给分标准:
- 正确找到最大值和最小值:5分
- 正确计算并输出最大值、最小值和平均值:7分
- 正确分配和释放动态内存:3分
请注意,给分标准可以根据实际情况进行调整,确保考察的内容和难度与招聘职位的要求相符。同时,给分标准应该注重考察代码的正确性、逻辑性和风格,以及对关键知识点的理解和应用。
相关文章:
c语言技术面试记录 ---- 纲要、题目、分析及给分标准
纲要 作为一个面试官,除了编程类的问题,你还可以考虑问一些关于技术知识、项目经验、解决问题能力和团队合作等方面的问题,以全面评估应聘者的能力和适应性。以下是一个可能的提问逻辑和大纲,供你参考: 技术知识和基…...
前端进阶之——模块化
在做项目的时候越来越发现模块化的重要性,做好模块化开发不仅给后期的维护带来不少好处而且大大提升项目开发效率,接下来整理一下模块化相关知识吧。 模块化开发的优点 封装方法、提高代码的复用性、可维护性和可读性隔离作用域,避免污染全…...
Python爬虫抓取表情包制作个性化聊天机器人
在现代社交媒体和即时通讯应用中,使用表情包已经成为一种流行的沟通方。本文将介绍如何利用Python编写一个简单而有趣的聊天机器人,并通过爬虫技术来抓取各类表情包,使其具备个性化特点。 1.确定需求与功能 -定义聊天机器人需要实现哪…...
使用pip命令安装库,装到其他环境中的问题。
问题描述:我们在pycharm中创建了新的虚拟环境,但是在其终端使用Pip命令安装库时,发现库却安装到了其他conda创建的环境中。图示安装gym库,刚开始安装到了其他地方,第二次正确安装。 原因分析:安装库时&…...
如何使用CSS实现一个带有动画效果的进度条?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML 结构:⭐ CSS 样式:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那…...
uni-app 报错 navigateTo:fail page “/pages/.../...“ is not found
这个错误的意思是:识别不到该页面 错误可能一:没有在 pages.json【微信小程序是 app.json】中定义该页面的路径 如: pages.json "pages": [{"path": "pages/index/index" }, {"path": "pag…...
【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树
文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化…...
概念解析 | 量子机器学习:将量子力学与人工智能的奇妙融合
注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:量子机器学习。 量子机器学习:将量子力学与人工智能的奇妙融合 量子增强机器学习:量子经典混合卷积神经网络 量子机器学习是量子计算和机器学习的结合,它利用量子力学的特…...
【Cortex-M3权威指南】学习笔记4 - 异常
目录 实现 CM3流水线CM3 详细框图CM3 总线接口总线连接模板 异常异常类型优先级定义优先级组 向量表中断输入于挂起NMI中断挂起 Fault 类异常总线 faults存储器管理 faults用法 faults SVC 与 PendSV 实现 CM3 流水线 CM3 处理器使用 3 级流水线,分别是:…...
RISC-V(2)——特权级及特权指令集
目录 1. 特权级 2. 控制和状态寄存器(CSR) 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程(hart)是运行在某个特权级上的,这个特权级被编码到一个或者多个 CSR(control and status register&a…...
Linux——常用命令大汇总(带你快速入门Linux)
纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.终端和shell命令解析器终端和shell命令解析器概述终端提示符的格式常用快捷键 二.Linux命令格式帮助文档:man 三.目录基础知识Wind…...
记录 使用 git 克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )
解决方法: 1. 新建空文件夹->右键->点击 Git Bash Here2. 输入 cd C:3. 输入 cat ~/.ssh/id_rsa.pub4. 输入 ssh-keygen重复回车,生成一个矩形,则说明公钥已经生成了。重复步骤3,生成publickey,右键…...
kafka---- zookeeper集群搭建
1.准备工作: ##准备3个节点,要求配置好主机名称,服务器之间系统时间保持一致 ##注意/etc/hostname 和/etc/hosts 配置主机名称(在这个里我准备Prac-zk-133, Prac-zk-134 , Prac-zk-135二节点) vim /etc/hosts #保证可以通过主机名互通 添加格式为IP 主…...
linux安装firefox
1.下载对应包 https://www.mozilla.org/en-US/firefox/all/#product-desktop-release 2. 挂载桌面链接(如果/usr/bin/firefox下有的话,先删除) ln -s /opt/firefox/firefox /usr/bin/firefox 3.执行以下命令,即可启动Firefox客户端: firefox...
【MySQL】基础语法总结
MySQL 基础语句 一、DDL 数据库定义语言 1.1CREATE 创建 1.1.1 创建数据库 语法结构 CREATE DATABASE database_name;示例 CREATE DATABASE demo;1.1.2 创建表 语法结构 CREATE TABLE 表名 (列1 数据类型,列2 数据类型,... );示例 CREATE TABLE new_user (id INT PRIMARY KE…...
【玩玩Vue】使用el-menu作为菜单时,通过一二级路由控制菜单高亮
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、Vue路由二、路由一级控制高亮(常用)1.vue中路由文件2.网址样式3.Vue文件4.$route的内容 三、路由二级控制高亮…...
9.2 【C语言】使用结构体数组
一个结构体变量中可以存放一组有关联的数据(如一个学生的学号、姓名、成绩等数据),如果有10个学生需要参加运算,显然应该用数组,这就是结构体数组。 9.2.1 定义结构体数组 例9.3 有三个候选人,每个选民只…...
leetcode原题: 最小值、最大数字
题目1:最小值 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差 示例: 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出:3&…...
Prompt2Model: Generating Deployable Models from Natural Language Instructions
本文是LLM系列文章,针对《 Prompt2Model: Generating Deployable Models from Natural Language Instructions》的翻译。 Prompt2Model:从自然语言指令生成可部署模型 摘要1 引言2 Prompt2Model框架3 参考实现4 实验设置5 实验结果6 讨论与结论不足道德…...
前端埋点 sendBeacon 替代方式
看英文文档真的很重要 sendBeacon 限制比较多, 容易跨域, 跨域时候还必须指定请求头, 不能使用通配符来解决跨域 文档地址 文档里面说 fetch 其实可以代替 sendBeacon 原文: Note: For use cases that need the ability to send requests with methods other than POST, or …...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
