[大一]25-给排水->软件工程
录入信息
审核 | 彭杰(162304124)
个人信息
Cai
有点代码基础,学过Python、C#、Go、Kotlin,没参加过算法竞赛。
- 原专业: 给排水科学与工程
- 转入专业: 软件工程
- 转专业成绩: 机试第一,综合第一
- QQ: 3042538328
- Blog: blog.terraria.ink
- GitHub: ACaiCat
时间线
暑假 - 10月
按照学长的经验买了导论和吉米多维奇,但是发现自己真的很不喜欢写数学或者是背导论,所以放弃了转专业,重心放在学习Go和Kotlin上。
11月14日
教务处发布2025转专业细则,计算机学院转专业改为机考,开始备战转专业。
(一)对2025级学生进行综合考核,
包括机试和面试。
1.机试:计算思维、程序设计等(支
持C/C++、Java、Python)
2.面试:综合了解学生专业兴趣、学
习能力、在校表现、心理素质等。
11月14日 - 12月1日
前三天刷完PTA L1,后面刷洛谷训练题单,刷到【算法1-3】暴力枚举发现时间不够了,然后【算法1-4】递推与递归到【数据结构1-4】图的基本应用每种刷几个基本题练练手。
12月1日
转专业机试,考完发现两题全WA,想死的心都有了,算了下分510(其实是590)。
12月3日
出面试名单,发现居然居然考了第一,然后开始准备面试了。
12月4日
面试,第一个上去超紧张,搞完之后感觉没什么问题。
12月6日
出结果,学院拟同意接收,转专业成功。
备考
语言
我主要使用C++和Python,其中Python用来处理高精度和复杂字符串题。如果你0基础,直接选择C++即可。
Why C++?
- C++相比C语言有更多的容器,字符串也更加好用,还有更多轮子
- 题解基本上都是C++写的
- C++相比Python更加显式,代码更加清晰
- 大多学长都用C++,你用Python可能无人解答
IDE
- VS Code: 非常推荐,但是不好配置(配置教程)
- Clion: 非常非常强大的IDE,使用高门槛,推荐有基础的同学使用 (配置教程)
- Dev C++: 开箱即用的屎,如果你愿意的话...(配置教程)
注意
- IDE配置较为复杂,建议找视频教程
- 遇到网络问题请自行解决
- 不管你用什么IDE,都请使用g++和C++ 17
- 看教程是非常基础的计算机技能,如果你这个都做不到可以考虑换个专业了
资源
语法学习
- 深入浅出学到第十二章贪心
- 学完结构体就开用开始看菜鸟教程•STL学一下STL的常用容器和算法(能照葫芦画瓢就行)
常用STL容器
| 容器 | 主要用途 | 关键特点 | 常用操作(示例) |
|---|---|---|---|
vector |
动态数组,最通用 | 随机访问 O(1),尾部增删 O(1) | push_back(), pop_back(), size(), [], clear() |
string |
字符串处理 | 类似 vector |
+=, find(), substr(), compare() |
set |
有序集合 | 自动排序,查找 O(log n) | insert(), find(), erase(), lower_bound() |
map |
键值对映射 | 按键排序 | [], insert(), find(), erase() |
unordered_set / unordered_map |
哈希集合/哈希映射 | 平均 O(1) 查找,无序 | 同 set/map,但无 lower_bound |
pair |
存储两个元素 | 可作为 map 的键,或用于存储二维点 | first, second, make_pair() |
STL算法和数学函数
| 算法分类 | 函数 | 功能说明 |
|---|---|---|
| 排序与查找 | sort(begin, end) |
快速排序(默认升序),可自定义比较函数 |
find(begin, end, val) |
在区间内查找值为 val 的元素,返回第一个匹配的迭代器(如未找到返回 end) |
|
| 反转 | reverse(begin, end) |
反转区间 |
| 最大值/最小值 | max(a, b), min(a, b) |
返回两个值的较大/较小值 |
max_element(begin, end) |
返回最大元素的迭代器 | |
min_element(begin, end) |
返回最小元素的迭代器 | |
| 统计与填充 | count(begin, end, val) |
统计某个值出现的次数 |
fill(begin, end, val) |
将区间填充为指定值 | |
memset(C 风格) |
按字节填充 | |
| 排列组合 | next_permutation(begin, end) |
生成下一个排列 |
prev_permutation(begin, end) |
生成上一个排列 | |
| 数值运算 | accumulate(begin, end, init) |
累加 |
__gcd(a, b) |
最大公约数 | |
log(x) |
自然对数(以 e 为底,ln(x)) | |
log10(x) |
以 10 为底的对数 | |
log2(x) |
以 2 为底的对数 | |
pow(base, exponent) |
幂运算:base^exponent | |
sqrt(x) |
平方根 | |
ceil(x) |
向上取整 | |
floor(x) |
向下取整 | |
abs(x) |
绝对值 | |
fabs(x) |
浮点数绝对值 |
注意: pow和log可能会有精度和速度问题,建议手搓
刷题
- 边看深入浅出,边刷洛谷的训练题单,一定要刷到
【算法1-3】暴力枚举,建议刷到【算法1-5】贪心,如果刷不完可以选择性刷。 - 刷PTA L1,必须完成,因为会考原题。
- 刷完可以自己从刷过的题中找一些有价值的题,然后试着自己重写
- 考试的时候禁止使用IDE,只能在PTA界面答题,最好提前训练
Cai's Blog: Cai写的一些题解
建议
- 要善于使用AI,不会问DeepSeek或者更好的AI。
- 问学长学姐应该要有礼貌,端正态度。
- 可以看AI写的代码,但是你必须要自己写出来,不然你就是纯抄AI。
- 记住你是在学习,不是在完成任务,不是说你把题单都写完了你就过了,关键是你从题单里学到什么东西能用进转专业考试的。
- 不要过度依赖AI调试,出错首先自己调试,多print,多读题,实在搞不定再AI。
- 这是长期计划,请至少留下2个月时间准备。
机试 (590/800分)
流程
需要带的东西: 身份证、学生证、申请表、一支笔
- 进考场前核对信息,然后在门口座位表找到自己的座位号。
- 进考场后先签名,然后根据考场门口的签到表找到自己的座位(每个电脑桌都会有编号)。
- 桌上有迷你主机,按开关开机。
- 进入指定考试系统(监考会说用哪个)。
- 连接校园网(使用福大统一身份验证登录,没有校园卡也可以正常连接)。
- 打开考试专用程序,举手示意。
- 监考老师扫描考试程序二维码登录。
- 等待考试开始(此时无法作答,提示题集未开放)。
- 倒计时结束,考试开始(如果无法打开题集,点考试软件左上角刷新页面即可)。
- 开始作答。
- 考试结束,没有提交的代码会全部自动提交,可以查看自己的得分。
考试详细: 2025大一计算机机试题目•注意事项
答题
Cai是按照题序做的题,感觉2025的题难度是按照题号的,往年大二考题题目难度和题序是无关的,如果来年有变动以实际情况为准,。
1. 再进去几个人
PTA原题送分题,\(a-b\)直接秒杀,如果你写C/C++/Java可以把完整的代码模板写在这里,方便后面的题复制粘贴。以下是Cai自己用c++的模板:
#include <bits/stdc++.h> // 提交选择g++就可以使用邪恶万能头
using namespace std; // 邪恶全局std
using int64=long long; // Cai习惯用int64
int main()
{
// Cai喜欢cin,这里建议优化一下输入
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
}
2. 前一天的日期
分支选择题,卡得最久的一题,主要是因为Cai不是很记得大小月和闰年规则,加上题目给的信息量极少,好在最后耐心试出来了。
思路: 用一个长度\(12\)的数组去放每个月的天数其中\(0\)索引放12月的天数,然后定义个函数来判断年份是否为闰年。把情况分为: 1月的1号、3月的1号、非1月和3月的1号、非1号进行处理。注意输出需要使用%04d和%02d去补齐0。
3. 分糖果
洛谷原题,感觉不难,难点是处理边界的小朋友。
思路:把每个小朋友的糖果数存进vector<int> candy(我爱用),然后遍历,先求每一份糖果peace=candy[i]/3,然后自己留一份,剩下两份给前后两个小朋友(这里第一个和最后一个小朋友要特殊处理)。
4. 试验田
简单模拟题,这里做的时候循环跳出条件写错了,好在最后花了点时间调出来了。
思路: 把每块地产量存进vector<vector<int>> g,然后枚举每一种高产地的左上角坐标\([0,n-m]\),分别计算每种高产地的总产量,把总产量最大的高产地左上角坐标记下。注意要求输出的坐标是从\(1\)开始的,如果以\(0\)为初始下标记得最后结果要\(+1\)。
5. 骑士与恶龙
简单贪心题,写的时候把恶龙和骑士的输出顺序搞错了,最后花了点时间调出来了。
思路: 先用vector<pair<int,int>> qs和vector<int> nl存入骑士的战斗力和序号和龙的战斗力,然后把用sort对骑士的战斗力进行升序排序,对龙的战斗力进行降序排序,遍历nl,在循环中再遍历qs,找到符合的骑士直接存入结果vector<int> res,然后把骑士的序号标记为\(-1\)表示骑士已被使用,如果该龙没有合适的骑士则直接输出gg并结束程序。
6. 贪吃蛇吃苹果
神秘模拟题,最后掉了个一个测试点,90分。
思路: 用vector<vector<bool>> apple存入有苹果的位置,然后定义一个方向dir,当dir==0时蛇从左向右移动,当dir==1时蛇从右向左移动,当撞到左右边界蛇就移动到下一行,然后改变方向,移动到苹果位置就把苹果吃了,直到吃掉指定数量的苹果,输出其坐标。
7. 一元一次方程
难蚌字符串解析题,没时间调试,0分。
8. 缺失的硬币之和
难蚌模拟题,没时间写也没时间调试,0分。
题目详细: 2025大一计算机机试题目•题目
建议
- 时间分配要有规划,和做数学题一样,不要一直卡题影响全局。
- 用轮子做题,不要手搓轮子,可以用
sort就不要手搓排序了。 - 调不出来可以先跳题,有想法了再回来调。
- 答案部分错误可以读一下题目,看一下有什么缺漏。
面试 (35.33/40分)
自我介绍
各位老师下午好,我是来自给排水科学与工程1班的吴佳伟,很高兴今天能有机会进入面试。
我接触软件开发已有一定时间,主要使用C#和Python进行开发,熟练使用Git、GitHub、SQL、ORM、Docker、GitHub Action等。在GitHub上贡献过101个仓库,共计277个拉取请求。
空闲时间喜欢写一些小项目,比如上个月做过自动开关屏幕挂灯的程序。开发过一个QQ官方机器人,提供游戏数据查询和管理服务,目前服务约900群,累计用户6000人。今年8月我加入了西二在线工作室的福uu开发组,负责Alpha测试推送QQ机器人的开发和维护,目前正在学习go语言后端开发知识。以上就是我的基本情况,谢谢。
当时面试老师分坐在左右两排各两个,然后我坐在两排之间的过道前。我不是很擅长面试,所以有点紧张。
问答 (大概回忆)
I3: 你刚刚说你还会C#啊(神秘笑),你是为什么选择学C#呢?
Cai: 我开发游戏的模组和插件的时候学的。
I3: 你没有参加竞赛吗?
Cai: 我初高中都是单休,平时没有什么时间去搞竞赛
I3: 你上面说你学过这么多东西,你是什么时候学的?
Cai: 初高中空闲时间学的。
I3: 你高数期中成绩是多少?
Cai: 我们高数成绩还没有出分。(还好没出分...)
I3: 你高考数学英语的成绩大概多少?
Cai: 数学一百多,英语一百二十多 (我是真记不清了...)
I3: 你说你参与过很多开源项目,那么当两个人同时修改一个文件发生冲突时如何解决?
Cai: 应该先git s...(沉默,紧张爆炸了status突然不会读)查看冲突的文件,用文本编辑器(紧张++++,不知道怎么表述)把一堆大于号小于号包裹起来的冲突代码手动合并,然后用git add添加修改完成的文件,然后git commit(有点不太确定,但是答出来了),我平时合并主要用GUI或者WebGUI,很少用CLI,冲突太多一般会直接关掉(这句话有点糖了)。
I2: 你在福uu开发组写的BOT具体是做什么的?
Cai: 每次发Alpha测试版安卓用户要去GitHub Release去下载不是很方便,所以就开发了这个机器人把Alpha版安装包推送到QQ群里,方便大家安装测试。
I2: 有兴趣可以了解一下SOSD。
Cai: OK! (这个并非拷打问题,但是其实听到这句话感觉老师对我印象应该还好)
I4: 还有要补充的吗,还是说结束面试?
Cai: 结束
Cai: 谢谢 (拿完证件灰溜溜出去了)
总结
面试问的问题很大程度上是基于你的自我介绍的,自我介绍一定不难吹得太狠,自己会啥说啥,不要吹大了,自信和真诚是必杀技。
自我介绍
最大程度展现自己的水平,但是别乱吹,会啥说啥,0基础也没关系,如果你吹过头了,被老师一问啥也不会很很影响评分。自我介绍应该在1-2分钟左右,太长老师听不下去,太短老师印象不好。
小建议
- 不要轻易说自己精通/会xxx语言,除非你真的很了解,可以换成会学过一点或者直接说自己学到哪里。例如:如果你说你会C++,那面试老师就要问你指针数组和数组指针的区别了。
- 不要轻易说自己会算法,除非你真的全都懂,可以说自己会一点简单的算法,或者自己具体会什么算法。老师可能会问你这个算法的实现细节、时间复杂度(平均,最大,最小)和空间复杂度,需要有所准备。
- 如果要提兴趣不建议提娱乐类的,比如打游戏。
- 语速不要太快,会显得你很紧张,但是不可以断断续续的,事前应该熟背自我介绍。
建议准备的问题
当然你的自我介绍是关键,老师一定会从你的自我介绍中提问,敢说就要有被拷打的准备。
Q: 为什么要转出原专业?
Q: 为什么要转入本专业?
Q: 对本专业有什么了解?
Q: 转入成功后有什么规划?
Q: 你的高数成绩是多少?(期中没出就算了)
Q: 你的高考数学英语分别是多少?(如果有薄弱科目需要有所准备,老师很有可能会接着问)
评分标准
- 考察能力包括专业兴趣、学习能力、逻辑思维及表达能力、心理素质和学术专长。总分是40分。面试最后需询问是否已答题结束后再结束该考生面试。
- 评委对每位考生的综合素质及能力(满分40分)打分,换算成百分制,一般按照70分到90分进行打分,即综合素质及能力的分数一般为28分到36分,一般不要打不及格。
- 面试成绩计算规则:去掉一个最高分,去掉一个最低分,其他三位所打分数的平均分为该生的最终面试成绩。成绩计算到小数点后2位。汇总表上,每位老师都要签名。
神秘のBlog
版权声明 © 本网站内所有文章著作权归作者所有,禁止转载。