前言:今年我获得了厦门大学信息学院的拟录取资格(计算机系),从厦门回家已经一个月了,一直拖延症着没有动笔,这里简单分享一下流程和经验,希望能帮助到有需要的人。
本文先讲一下夏令营的考试流程,然后讲一下内功方面该怎么修炼。事实上后一点更为关键一点。
一、推免夏令营流程
1.夏令营预报名
这方面就中规中矩按照流程来了,厦门大学有自己的推免报名系统,大家可以提前去看一下。这一点比某些学校强多了,我通过邮件报名了某个学校,后来他们因为没有收到邮件而漏了40多号人(包括我)。
电子信息要在系统里填写,包括获奖情况、项目情况、论文情况和交流情况等等;纸质信息就是各类材料的复印件,外加研究动机+导师推荐信,要用顺丰寄到学校去。这点不仔细说。反正填错了没关系,打电话找招生办或者联系招生办微信公众号,工作人员会帮你退回修改的。老师都很nice。
入营的压力不是非常大,我报的是计算机系,今年入营130人左右(最后拟录取60人左右)
2.夏令营选拔:机试20%+笔试40%+面试40%
先讲一下机试啦:
机试是第一个考试,一共两个小时。两个大题编程,要特别熟悉文件的读入。可以用C/C++或者Java写,机房的IDE是Dev、Qt、VS、VC和Eclipse等。考试的时候没有OJ,本地Debug吧~时间到了以后直接离开机房就可以,不要关电脑,有一个老师会直接在你的电脑上看代码/跑程序(手工改卷)。
我的那场考试考了两道大题,主要是编程基础和数据结构。第一题是求出数组中出现次数最多的一个数;第二题是求出最短路径(图论/无向图)。还挺简单的,复习的时候用清华大学的《数据结构》就好(虽然我本没有用,但是这本书是厦大的教学用书)
Tips 友情提示几点:
1.用Java的朋友一定要熟悉Eclipse和低版本语法啊!我平常做项目都用IntelliJ,但是机房的JDK是1.6版本,根本装不上IntelliJ,最后硬生生用Eclipse来写,非常不适用(虽然最后写出来了,但是差点就超时了)
2.如果有特别喜欢的IDE,一定要提前和老师说,老师会告诉你机房能不能装上。有同学问了能不能用CodeBlocks,后来老师就告诉他可以用了。
再说一下笔试
机试考完半个小时后就要去考笔试了,也是两个小时,太烦了。笔试是十个大论述题/手写代码题,没有选择填空判断这种水题。这几年出现的经验大概是……
1.顺序表和链表的优缺点,深度、广度优先搜索适用哪种数据结构(递归队列)
2.BFS、DFS和层次遍历算法思想及其数据结构;
3.给出一个数组,画出对应的Haffman树,注意画出构造过程;
4.给出一个数组,分布求AVL和BST的构造过程;
5.给出一个数组,画出快排、希尔、冒泡、堆排的关键节点序列;
6.给一个连通图,用Prim算法和Kruskal算法做出最小生成树。
7.什么是假溢出?怎么处理?
8.求一个序列中第K大的数?
9.描述一个自己最熟悉的算法,并谈谈如何改进。
10.一个手写代码;
看完有没有觉得很无趣……?这就是数据结构的考试啊?对啊,是这样的,基础就是要扎实。
我的建议是复习一下“自己最熟悉的算法”这一题,感觉会每年都会考,我写了红黑树,我朋友写了KMP,还有人写了B+树,有的人实在不会就写了双向链表。然后买一本《剑指Offer》,把上面的互联网公司面试题目都看一遍,基本上就可以对付最后的手写代码题目了(因为今年刚好考了书上我看过的一题,不知道是不是按这个出的)
特别说一下要注意笔试,好像有人告诉我笔试低于某个分数段就可以直接GG了。不过我当时哪知道这些,考到最后想上厕所,于是直接交卷了。
最后说一下第二天上午的面试
面试分成了若干组,每个面试组有四个老师+一个主持人老师。建议笔试前再把简历打印一份,当场先给老师一份。流程是自我介绍-提问-抽问。
面试首先是英语自我介绍,没有限定时间。老师会在你介绍完问你几个问题,内容应该是和你的英语自我介绍相关,需要用英文回答。这都是有套路的,一般是个人院校学科情况+科研能力+研究兴趣三个环节,照着这种思路写的话老师会比较喜欢。
接下去是中文的提问和回答,首先从题堆(一个大盒子)里抽出两道题进行回答,问题的范围比较宽泛,涉及算法、计算机组成、操作系统、数据结构的问题。不会就说不会,再抽呗(可能会扣掉印象分数)。之后就是其他的老师开始自由提问了,问的内容和你的回答直接相关,环环相扣,不断深入。从在项目中担任什么角色,做了哪些工作等开始,然后问到项目怎么实现。还有聊到为什么选择厦大啊(我回答我是厦门人啊我想家啦)
题库里出现的题目五花八门,自求多福吧
简述数据库范式(我抽到的);谈谈对于网络安全的理解,同时要求举出一个网络攻击工具(我抽到的);谈谈十字链表;进程与程序区别等等。
以上是考核的主要内容,过了一周就会出结果。
二、内功准备
1.首先当然是英语啦,四六级肯定要过,老师手里的名单里还特意标出了四六级分数。很多人到最后才有四级500-的水平。我最后给出了六级585的成绩单,虽然不算非常好,但是在面试者中算比较高的了。口语随便练练就好,我是面试前一天晚上才写的(而且还没有写完2333)
2.数据结构要多练习,Haffman、AVL、Min-Heap这种东西要手写个五六遍才比较好。不要眼高手低。LeetCode适当做一点,不要多搞(我做了大概120道,因为题型不像就没有多搞了),做做PAT说不定有帮助。
3.认真准备一下项目,别到时都忘了自己干了什么,还有千万不要说自己没有干过的事情。如果你现在还是大一大二的话,就要好好开始搞了。数模啊大创啊论文都要去做,我最后带着一篇CSSCI的论文、一个软件著作权、一个互联网实习和两个大创去的。
4.多看一些前言文章,别拘泥于课本。如果你现在还是大一大二的话,可以买机械工业出版社或者人民邮电出版社的教科书看,别看学校上课用的PPT啦~看一些论文,学一些框架都可以。特别注意要理论联系工业实践,我记得老师问到我关于数据库范式的问题时,我表示实际的工业设计都是反范式化的(读《高性能MySQL》一书的收获),然后又谈了一些MongoDB、Redis和Neo4j这种非范式化的数据库。老师对这种超出书本范围的回答表示很满意,后来又问了我怎么存储图片,反正就是层层深入。
其他东西,包括大一大二学习方法之类的东西,我想单独开一片文章来写,这里就不赘述了。大家如果还有其他什么问题就留言吧。最后祝大家心想事成,明年(或者更以后)能进入理想的大学。