跳转至

[大一]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++?

  1. C++相比C语言有更多的容器,字符串也更加好用,还有更多轮子
  2. 题解基本上都是C++写的
  3. C++相比Python更加显式,代码更加清晰
  4. 大多学长都用C++,你用Python可能无人解答

IDE

注意

  1. IDE配置较为复杂,建议找视频教程
  2. 遇到网络问题请自行解决
  3. 不管你用什么IDE,都请使用g++和C++ 17
  4. 看教程是非常基础的计算机技能,如果你这个都做不到可以考虑换个专业了

资源

语法学习

  1. 深入浅出学到第十二章贪心
  2. 学完结构体就开用开始看菜鸟教程•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. 边看深入浅出,边刷洛谷的训练题单,一定要刷到【算法1-3】暴力枚举,建议刷到【算法1-5】贪心,如果刷不完可以选择性刷。
  2. PTA L1,必须完成,因为会考原题。
  3. 刷完可以自己从刷过的题中找一些有价值的题,然后试着自己重写
  4. 考试的时候禁止使用IDE,只能在PTA界面答题,最好提前训练

Cai's Blog: Cai写的一些题解

建议

  1. 要善于使用AI,不会问DeepSeek或者更好的AI。
  2. 问学长学姐应该要有礼貌,端正态度。
  3. 可以看AI写的代码,但是你必须要自己写出来,不然你就是纯抄AI。
  4. 记住你是在学习,不是在完成任务,不是说你把题单都写完了你就过了,关键是你从题单里学到什么东西能用进转专业考试的。
  5. 不要过度依赖AI调试,出错首先自己调试,多print,多读题,实在搞不定再AI。
  6. 这是长期计划,请至少留下2个月时间准备。

机试 (590/800分)

流程

需要带的东西: 身份证、学生证、申请表、一支笔

  1. 进考场前核对信息,然后在门口座位表找到自己的座位号。
  2. 进考场后先签名,然后根据考场门口的签到表找到自己的座位(每个电脑桌都会有编号)。
  3. 桌上有迷你主机,按开关开机。
  4. 进入指定考试系统(监考会说用哪个)。
  5. 连接校园网(使用福大统一身份验证登录,没有校园卡也可以正常连接)。
  6. 打开考试专用程序,举手示意。
  7. 监考老师扫描考试程序二维码登录。
  8. 等待考试开始(此时无法作答,提示题集未开放)。
  9. 倒计时结束,考试开始(如果无法打开题集,点考试软件左上角刷新页面即可)。
  10. 开始作答。
  11. 考试结束,没有提交的代码会全部自动提交,可以查看自己的得分。

考试详细: 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>> qsvector<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大一计算机机试题目•题目

建议

  1. 时间分配要有规划,和做数学题一样,不要一直卡题影响全局。
  2. 用轮子做题,不要手搓轮子,可以用sort就不要手搓排序了。
  3. 调不出来可以先跳题,有想法了再回来调。
  4. 答案部分错误可以读一下题目,看一下有什么缺漏。

面试 (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分钟左右,太长老师听不下去,太短老师印象不好。

小建议

  1. 不要轻易说自己精通/会xxx语言,除非你真的很了解,可以换成会学过一点或者直接说自己学到哪里。例如:如果你说你会C++,那面试老师就要问你指针数组和数组指针的区别了。
  2. 不要轻易说自己会算法,除非你真的全都懂,可以说自己会一点简单的算法,或者自己具体会什么算法。老师可能会问你这个算法的实现细节、时间复杂度(平均,最大,最小)和空间复杂度,需要有所准备。
  3. 如果要提兴趣不建议提娱乐类的,比如打游戏。
  4. 语速不要太快,会显得你很紧张,但是不可以断断续续的,事前应该熟背自我介绍。

建议准备的问题

当然你的自我介绍是关键,老师一定会从你的自我介绍中提问,敢说就要有被拷打的准备。

Q: 为什么要转出原专业?
Q: 为什么要转入本专业?
Q: 对本专业有什么了解?
Q: 转入成功后有什么规划?
Q: 你的高数成绩是多少?(期中没出就算了)
Q: 你的高考数学英语分别是多少?(如果有薄弱科目需要有所准备,老师很有可能会接着问)

评分标准

  1. 考察能力包括专业兴趣、学习能力、逻辑思维及表达能力、心理素质和学术专长。总分是40分。面试最后需询问是否已答题结束后再结束该考生面试。
  2. 评委对每位考生的综合素质及能力(满分40分)打分,换算成百分制,一般按照70分到90分进行打分,即综合素质及能力的分数一般为28分到36分,一般不要打不及格。
  3. 面试成绩计算规则:去掉一个最高分,去掉一个最低分,其他三位所打分数的平均分为该生的最终面试成绩。成绩计算到小数点后2位。汇总表上,每位老师都要签名。

神秘のBlog


版权声明 © 本网站内所有文章著作权归作者所有,禁止转载。