中科院软件所复试面试、笔试、口试、机试题目整理
题目
笔试真题
2019
填空题五个
1、两个矩阵相似且都存在一个未知数,求这两个未知数。(行列式相等+迹相等)
2、喝茶的70%,喝咖啡的80%,既喝茶又喝咖啡的最多和最少。(我写的50%和70%)
3、函数调用时两种最基本的寄存器保护策略(先中断,再压栈?不懂啊。。。)
4、给了一个堆序列,问你删除堆顶元素后重新调整堆需几次比较(根据数据自己调整一下)
5、中缀转后缀(大家都会)
四个选择题(可以多选)
1、一个进栈的序列,选出合法的出栈序列(送分)
2、求时间复杂度,两个for循环,外面是*2,里面是+1。(nlogn)
3、数据库是什么?(四个选项:是一张表、是一种关系云云)
4、哪个cpu调度算法会产生饥饿?(选优先级调度和短作业优先调度)
5、一个强连通图最多有多少条边?
简答题四个
1、程序和指令的区别是什么?执行指令的过程是什么?
程序是一组指令的有序集,指令是计算机操作的最小单位,一个指令对应着计算机的一个动作。指令执行分取指、译码、访存、运算、回写。具体写一下每个阶段。
2、死锁的定义是什么?产生的原因?必要条件?
死锁是一种由于多个进程竞争资源而陷入的一种僵局,若无外力作用,所有的进程都将无法继续向前推进。原因:1、资源的竞争。2、进程推进顺序非法。必要条件:1、互斥条件。2、不可剥夺条件。3、保持与请求条件。4、循环等待条件
3、四型文法是什么?(鬼知道)
4、排序算法都有哪些?1000个数里边找最小的8个,哪个算法最优?
把所有排序算法写上。然后说,堆排序算法最好。因为先取前8个数建立一个大根堆,从第9个数开始:1、比当前堆顶元素大,什么也不做。2、比当前堆顶元素小,替换掉堆顶,并重新调整为大根堆。最后剩下的堆中的8个数即为最小的8个数,时间复杂度O(n)
五选二
1、常规的概率论题目 Z=X+Y,X是离散分布,Y是连续分布。
求F(Z<1/2| X=0),求z的概率密度
2、离散的题目,逻辑推导证明(完全看不懂,知识都忘了)
3、代码找错。
我找到了8处错误,其中包括语法错误、数组越界、static变量的冗余初始化为0、局部变量使用前未进行初始化、按位与或(&,|)改成逻辑与或(&&,||)等等。我觉得最不容易找的一个错误是if语句中的X==0xAA,X是int型的,0xAA是char型的,有可能导致这个式子很难为真。(我只是觉得有的人可能注意不到数据类型所以比较难,大神勿扰)
4、打印文件的三个进程,PV操作控制一下。(王道原题我做过)
5、分布式数据库(看不懂别想了)
6、给了一个情景让你分析(软工的用户需求分析?没仔细看也不懂是啥)
2018
四道选择题(20分)
1.单链表中查找值为x的结点需要平均查找次数(n + 1)/ 22.DFS遍历有向无环图出栈时是拓扑序还是逆拓扑还是无序?
逆拓扑序
3.编译中除了词法分析、语法分析、语义分析和中间代码生成等还需要虾米?
代码优化与目标代码产生
4操作系统线程与进程的题
四道简答题(20分)
1.死锁的定义 死锁产生的原因和必要条件
2.给了二叉树的先序、中序、后序的遍历序列,把空格补全并画出树
3.举一个分布式系统的例子,说明中间件在分布式系统中的作用
4.小学数学题:100个人回答五道题,第1、2、3、4、5道题分别有…人答对,答对三道以上及格,问至少有多少人及格
一道算法题(20分)
给一个数组求最长递增子序列长度。(动态规划)
选做题40分
两道算法题2选1
(1)图的权值原来存在二维数组里,将图存到邻接链表中,写出数据结构和伪代码 写出求两结点之间最短路径的的伪代码
(2)没仔细看,一道回溯的题
两道其他题2选1
(1)Linux下系统调用什么意思,系统调用和普通过程调用的区别
(2)在浏览器中输入URL发生了什么
2017
2017年软件所复试题目和经验(专硕C组)
http://www.cskaoyan.com/thread-642463-1-1.html1}对于输入序列1,2,3,4,5,6,7(七个数字,具体不清了)。首先进行建立堆排序的初始堆(小顶)的主要过程,其次建立平衡二叉树的主要过程。
2}对于2000个数,仅需求最小8个,归并,基数,快速,堆,插入排序,那种最好,原因?
3}三并发进程q、w、e,q需资源3、1,w需资源1、2,e需资源2、3。若不对资源进行限制会发生什么,为什么?为保证程序正常运行应该采取什么分配策略?为什么?
4}什么是瀑布模型。什么是快速原型模型。什么是面向对象,它的基本概念和主要特征是什么。软件测试有哪些步骤。
5}找出程序错误,因为回忆版本,可能存在不足,如果什么可以知道的可以直接评论或者联系邮箱改正。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // 错误1:没有包含头文件,无法使用 strcpy
int copystringandcount(char *str)
{
int count=0;
char *buffer;
buffer=new char[MAX_PATH_LENGTH];
strcpy(buffer,str);
// 错误2:buffer 应该修改为 *buffer,这样遍历到终止符'\0'时就会停止
for(;buffer;buffer++)
// 错误3:buffer 应该改为 *buffer
if(buffer=='\\')count++;
// 错误4:buffer动态分配空间,需要在函数返回前释放,使用 delete[] buffer
return count;
}6,印象深刻,因为不会而且错了
1
2
3
4
5
6
7
8
9
10
11 union str{
int x;
char a[2];
}e;
int main(){
e.a[0]=1;
e.a[1]=9;
printf("%d",e.x);
return 0;
}问输出结果
我写的是0,应该是2305。涉及到大小端输出,我想的太简单的,我以为和struct一样。
ps:1和9的顺序可能弄反了,记不大清,知识点没错。
2017中科院软件所B组(基软+软工+天基)复试经验
http://www.cskaoyan.com/thread-642952-1-1.html笔试的内容第一题和第二题是找数字规律和图案规律,一共有六道小题每道3分,就类似于那种综合能力测试和智商测试的题目,有比较简单的也有看不太出来的(例如数列的第一题就是一个斐波那契数列,很容易看,但是之后两个我看了好久愣是没看出来)。
之后两道题目分别是中文和英文的算数题,就类似于几个筐子几个球,问至少拿多少个球才能颜色不重复,类似这种,跟专业知识并没有什么关系,英文中文各七道,英文的很容易,基本上能读懂题目就能做出来,中文的有一些难度。
再下面一道题目是5个专业相关的选择题,难度也不大,都是数据结构和操作系统的问题,分别涉及了指针,进程线程,堆排序建堆,出栈顺序。还有一个是啥记不太清楚了。
之后一个问题是个简答问题,三选二作答,
第一个关于死锁,以及为什么会引起死锁,如何解决这一问题;
第二个是解释什么是内核态什么是用户态,他们的区别;
第三个是问当在浏览器输入 www.taobao.com 时之后会发生哪些过程。从这三个题目中任选两个作答。
下面一个问题是翻译题,关于操作系统内核态和用户态的英文介绍,这个题目只要平时学习时看过一些英文资料,一些专有词汇认识就没什么难度。
最后一个题是简答题,是让你叙述一下自己完成的一个项目,论文,阐述一下课题的任务意义还有创新点什么的,反正这种题就是提前准备准备,然后往上码字就好了
2016
2016中科院软件所B组复试(基软)
http://www.cskaoyan.com/thread-596176-1-1.html\1. 智力题:1.数字序列找规律 2.英文智力题 3.综合智力题;
\2. 选择题:内容涉及数据结构、操作系统、计算机网络、数据库、软件工程、编译原理、C++等;(主要是基本概念比较简单)
\3. 问答题
\1) 浅谈大数据对生活带来的变革
\2) 浅谈对“互联网+”的理解
\3) 什么是数据库中的基本表,什么是视图,两者有什么关联
\4) 什么是系统调用,和过程调用有什么联系和区别
\5) 选择其中至少两个名词进行解释:COCOMO、PAAS、API、Git、
\4. 翻译题:选择其中一篇,第一篇是关于软件工程的,第二篇是关于物联网的;
\5. 表述题:结合自己的项目经历,选择其中一个题目进行表述
\1) 描述一个自己的项目,包括项目的需求获取、项目分析、项目的设计等角度阐述
\2) 描述自己发表的一篇论文,要求一作或二作
\3) 谈谈开源软件的影响
\4) 结合自己的项目经历表述自己对软件工程的认识
2016年中科院软件所A组考研笔试题(计算机科学国重、可信、天基综合)
http://www.cskaoyan.com/thread-595959-1-1.html一、选择1.第一个提供端到端的服务是哪一层。
2.双层循环的时间复杂度for(int k=1;k<=n;k*=2) for(int j=0;j<=n;j++)
3.哪个不是OSI参考模型的内容。
4.判断出栈顺序哪个不可能。
5.int float double 相互转哪个还是原来的而数字?
6.一个图V0,V1,V2,V3 边是(<V0,V1>,<V0,V2>,<V0,V3>,<V1,V3>)从V0开始DFS,多少种遍历序列?
7.浮点数对阶,左规右规,尾数处理,能造成阶码上下溢出吗?
8.cache4行,2路组向量,几块地址访问,会有多少冲突?
9.哪几个排序的一趟排序可以确定一个元素的位置?
10.4位体交叉存储器,几个访问地址,哪个可能有冲突?
11.哪个不是折半查找可能的序列?
12.哪个不可能是快排两次后的序列?
13.两个叶节点的遍历序列,哪一组可能在同一个哈夫曼树。
14.IGMP直接由谁提供服务?
15.算法分析是什么,解决什么问题的?
16.KMP匹配算法,下一个匹配的位置各是哪个位置?二、填空题
1.几个结点,多少度,求几个叶子结点
2.堆排序,筛选一个值后,下一趟筛选会比较几次
3.链路传输速率为1000Mbps,一个分组1000B,分组头部信息占用20B,发送980000B的数据,H1到H2需要多少秒?(链路图是<H1,结点1>,<结点1,结点2>,<结点1,结点3>,<结点2,结点3>,<结点3,H2>)(2010年408计算机学科专业基础综合原题)
4.数据结构中逻辑结构分为哪两个?
5.若干2K4的芯片组成8K8的内存,0B1FH地址所在芯片的最小地址是什么?
6.3个1,5个0可以组成的8位补码中,最小的整数是多少
7.希尔排序本质(直接插入排序)
8.计算机网络中接口特性中描述功能顺序的是哪个
9.考察发送接口和拥塞窗口的大小
10.C语言中的循环结构有哪些(for,while,do-while)三、综合
1.长度为m的带头结点单链表中,删除绝对值相同的多余节点,数的绝对值不超过n
2.6个有序表,长度分别10 35 40 50 60 200 ,怎么合并才能比较次数最少
3.五选二谈一谈概念和发展趋势(机器学习,人工智能,云计算,大数据,物联网)四、密码学
1.(1)对称加密和非对称加密区别。(2)非对称加密的计算,p=3,q=11,d=7,M=5。
2.(1)数据的完整性概念和原理。(2)用hash函数解释过程。
3.
4.方案:我想验证小伙伴的密钥和我的是不是一样,但是不能直接传递密钥。那么我生成一个和我密钥长度相等的随机串,做异或操作,发给小伙伴,小伙伴再用他的密钥也做异或操作,把结果发给我,我来比较和原来的随机串是否相同。问这个方案是否有漏洞。
2016年中科院软件所C组复试(软工、人机)+2014年B组人机4楼+2013年人机5楼
http://www.cskaoyan.com/thread-595991-1-1.html1.1 定义一个返回指针数组的函数,参数为int*。(英文题)
1.2 Ethernet连到internet需要的协议(HDLC、ARP、UDP、TCP)
1.3 对实数排序,选一个稳定的最优的算法(直接插入、基数、堆、快排)
1.4 关于动态查找表、二叉排序树、次优查找树、B-树是否是动态查找的吧
1.5 Volatile修饰符
1.6 两个浮点数,长度一样,前一个阶码长,尾码短,后一个相反。问两个表示的数的范围和精度
1.7 Critical section和mutex的区别
1.8 由先序和中序排序求后序排序(英文题)
1.9 安全加密,要求是不在每个节点增加开支(链路加密、节点加密、端-端加密、混合加密)
1.10给几次排序的结果,问是什么排序(快排)
2.1 人机的题目
(1)GUI跟WIMP的英文全称
(2)人机的展望
2.2 cdecl、stdcall、fastcall哪个可以用不定个数的入口参数
2.3 如何实现在查询记录时防止被更改
2.4 空闲内存分配策略以及优缺点
2.5 lock和semaphore分别实现互斥访问,并且不无限等待
3.1 分布式系统的定义、举例子、然后说一说你的认识
3.2 云计算服务形式
3.3
(1)数据挖掘的新应用
(2)每分钟上传700个小时的视频,如何快速帮用户搜索视频
2015
一、16道选择题。
涉及数据结构、C++、操作系统等。二、问答题。
(1)has a 和 is a 的区别。
(2)接口和抽象类的区别。
(3)c++中多态体现在哪儿(虚函数、纯虚函数,函数重载)
(4)软件工程的,用UML伪代码描述两种模板(或者说是模块?因为我大三在台湾所以压根就不知道这俩是啥。。。所以记不住)三、应用题。
(1)实现非递归式的二叉树深度优先遍历。
(2)动态规划,数塔。http://acm.hdu.edu.cn/showproblem.php?pid=2084
(3)动态规划,最大A。http://acm.hdu.edu.cn/showproblem.php?pid=1506四、英语作文:雾霾。(结合一下热门话题,也能猜到的)
看了下往年的,估计奇数年都有个作文这是个挺奇葩的规律。。。而且专硕的笔试题基本无从准备,老师也只会说拥有扎实的专业课基础就没问题之类的话。。。大致复习就是主要看C++吧。
2014
今天刚笔试完,趁热发了,今年软工中心竟然没机试!
一、选择题(4道,16分,3选1)
1.具有n个顶点的森林有k条边问一共有几棵树
2.有向图深搜出来的点的顺序(拓扑,逆拓扑,随机什么的)
3.下面哪个结构从某一节点开始往祖先回溯,得到的序列是有序的(有二叉排序树,堆,另一个记不清了)
4.上下文无关文法中的递归是是不是总能产生无限的句子(能,不能,看情况)二、简答题(5道,35分)
1.简述用户和内核级线程的区别联系
2.什么是上下文无关文法,什么是正则文法
3.简述三种优化代码的方法
4.列举你知道的中间件和分布式系统以及中间件的作用
5.过桥那题,跟去年一样(http://www.cskaoyan.com/viewthread.php?tid=197999&highlight=%C8%ED%B9%A4)三、邮递员从右上角的红点开始走,要求走过所有的道路,再回到起始点,最好没有重复走的如果必须重复走,说出最少的方案
四、编程
给你一个字符串(str)和另一个字符串(remove)从str中删除所有remove中出现的字符
五、pv操作,给你n个进程,互斥访问临界区,要求使用Lock形式和信号量形式实现,要求互斥且没有无限等待的情况
六、英语翻译(有关分布式的)
今年与往年不一样,分了ABC三组,A组包括:国重、并行、可信和软工,B组是剩余实验室,C组是专硕。我报考的是国重,所以在A组,谈下复试:
27上午体检,体检完10点开始笔试,国重笔试题目如下:(等待补充)
1,图G,边数位m,着色数为c,证明:(1)c(c-1)<=2m;(2)若无孤立点,证明(1)中等式成为当且仅当为完全图。
2,离散证明命题等价的,较简单
3,简要说明有一个节目你去参加,主持人要你从三道门中间选一个门,门后面是车,羊,羊。前提你不知道它们的摆放顺序!你的目标当然是汽车,假如你选择了一号门,主持人则按照节目程序从另外俩个门即二号三号门中挑选出有羊的一个门把它打开(注意主持人事先知道哪个门里有羊),假如把二号门打开是羊,再给你一次机会可以换三号,你换吗?说明换和不换的理由?一共有四问····
4,用栈实现队列
5,C++的题,补充吧。
第一题是高数证明题,很简单的介值定理的应用,初试能过的话这个肯定没问题。
第二题是很古老的一道概率题,三扇门里有两扇门后面是羊,一扇门是车,你先选一个,主持人从剩下的两扇门把有羊的那扇门打开,然后问你换不换选项。总共有4问,
(1)主持人总是在你选中羊的时候选择有羊的一扇门打 开,问你换不换选项,猜中车的概率是多少
(2)主持人总是在你选中车的时候选择有羊的一扇门打开,问你换不换选项,猜中车的概率是多少
(3)主持人总是在你选中车的时候选择有羊的一扇门打开,否则以50%的概率选择有羊的一扇 门打开,问你换不换选项,猜中车的概率是多少
(4)主持人总是在你选中车的时候选择有羊的一扇门打开,否则以均等的概率执行a,b两个选项,a:在剩下的两扇门选择有羊的一扇门打开 b:以均等的概率执行a,b两个选项。这里假设游戏可以无限重复下去。
第三题是一道数据结构题,让你用堆栈以及堆栈的三种基本操作(push pop empty)来实现一个队列以及队列的push pop empty操作,要求空间复杂度尽可能小
第四题是一道运算符重载,重载了“<<”这个符号,给你一段程序,以及运行结果,让你填写程序空白地方缺失的代码。
笔试考的居然是离散数学,着色问题,概率论,两道编程题。5选4,概率论其实有4个小题,讨论情况比较复杂,没有做完,离散数学是比较简单的证明题,析取范式和合取范式。着色问题瞎写了一些证明,不知道对没有对。编程题相当easy啦!!刚好1.5h把5道写完了。感觉比较良好,下午的面试相当有信心。(软件所壕啊!!真有钱!!食堂geilivable!)
笔试(因为很多都不记得了,ws同学帮忙补充了一些)
选择题 10道, 每道3分
大部分都忘了, 主要是408和一些计算机的基本知识, 比较简单
只记得有考过 计算cache的访问效率、死锁(好像有) 和一些数据结构,数据库,软件工程的知识。简答题
给出树的前序遍历、中序遍历, 让你写后序遍历
PCB包括了什么内容
解释软件工程的目的
解释什么是软件质量, 从多个个方面来评测软件质量
解释名词的意思(从中选出几个): MapReduce、API、svn、DBMS、SOA、IAAS、COCOMO、CMMI(好像是这个)
从下面三个话题中选择一个来讲讲: 描述你做的一个项目;描述你参与的一篇论文(好像要求是第一作者或者第二作者); 从技术和实现上讲讲你对 大数据、云计算(好像是这个)等等 的理解
翻译:从下面两段中选择一段来翻译, 我翻译的是第一段,内容是和遗传算法有关的。
2013
笔试一共四道题,时间2小时,足够:
一.用数学归纳法证明n个元素的集合有2^n(2的n次方)个子集(简单)
二.两问:(很基本的离散,但由于没看书,忘了怎么做)
(1).什么是全序关系,什么是偏序关系
(2).集合A{26个字母},关系R(α,β|(β不在α之前,α,β是A中元素)),R是什么关系
三看程序写结果(C,C++两个二选一,)
a.C++等高人补充
b.
1
2
3
4
5
6
7 int foo(int y){
return (y>1?foo(foo(--y)+foo(--y)):y);
}
AAAafdasdf
int main() {
return (printf("%d",foo(10)),0);
}四.英语短文,必写 my way to_(其实我猜到了题目,11年复试,12年保研都是这题目,但我没准备,写了个my way to ISCAS ,表达了自己对ISCAS 的向往,一页就差不多了)
28号早上体检,之后是笔试,记得笔试一共四道题吧,(专硕组)第一道是线性代数的,
(1) 证明实对称矩阵的特征值都是实数
(2) 证明实对称矩阵对角线元素之后等于特征值之和
(3) 证明实对称矩阵行列式的值是特征值的积
第二道是C语言的题,第三道是双重散列表,第四道是写一篇英语作文 My way to
一、选择,五道题,每题一分
一道编译,具体内容忘记
一道dfs遍历过的图退栈后打印呈A逆拓扑排序B拓扑排序C?
还有两道忘干净了。
二、简答,共四题二十分
一道什么是死锁,原因和必要条件
一道用两个队列完成栈的功能,用两个栈完成队列的功能,用伪代码或某种语言写出
一道三叉B一树最多有多少个结点,最少有多个结点,画出其形态
一道四个人过河,只有一个手电,甲一分钟,乙二分钟,丙五分钟,丁十分钟,怎样十七分钟内过河?
三 散列式。h1(k)= k mod m;h2(k)=1+k mod(m-1)
四 用P,V完成,售票员开车门关车门,车门关时司机才能开车
五 翻译,关于分布式系统
补充lz:
选择填空第一道是从希尔排序、冒泡、堆排序、快速排序里面选出平均速度最快的和稳定的排序方法;
编译的选择题是关于编译程序结构的,除了词法分析、语法分析之外,应该还有表格处理和出错处理程序; font>
选择填空的最后一道是对称矩阵的压缩存储,a11 = 1, 求a85的地址
第三道大题是关于编译原理里面的消除左递归文法的
笔试的内容(可能顺序有些不对,记不太清了)第一题智力题,是数字推理,跟考公务员的那种推理模式是一样的,不过分值不大,一个一分,做不出来也没什么。
第二题是英语题目的推理题,这个就比较简单了,看懂了基本都能做出来。
第三题是智力题,什么给两个桶,互相倒水,让称出来多少升的水那类的题。再然后是专业知识,这个都是选择题,很简单,我从开学就开始准备,一直在看书,结果都没用上,考的很简单,基本都能答出来,这个专业知识题20分。
然后貌似是英语翻译,给一大段专业上面的一个东西的介绍让你翻译,表示英语能力没在这里,我就没写这个题。
最有一个25分的题二选一,一个是关于软件测试的,一个是操作系统启动的时候内核执行顺序的。
面试真题
2020
http://www.cskaoyan.com/thread-659704-1-1.html
我的ppt包含4个部分,本科学习情况(40s)、社会实践(30s)、毕业设计(2min)和研究兴趣(1min20s)。
我的ppt页数很多,有26页,个人情况1p,本科学习1p,社会实践1p,毕设15p,研究兴趣1p,剩下的是过渡页。
我保证最小的字号也有24号,ppt上的许多内容我都没有在口语里展开来讲,但是放在了幻灯片上让老师可以自己看到(虽然我不知道老师实际上有没有看)。
之所以这样做,一是可以避免念很多拗口的名词,二是可以调动老师阅读我ppt内容的兴趣,三是可以充分利用好5分钟的自我介绍时间。因为我是半跨考生,没有实践项目所以非常慌,只能尽量让老师注意到我其他方面的综合素质。
我本科学习情况那页就写了初试四门专业课还有本科得过几个校级以上的奖励(一个新生奖学金,一个数模国二,一个美赛H,不过都是和计算机无关的Orz)。
毕设是计算机系的毕设,不过只是个Survey,不是工程型项目。之后是英文问答,因为我第一问回答的时间太短,所以老师多问了我一个英语问题。
其实我是在复试场上忘记了英语问答应该就一个问题阐述3分钟,我几乎没有思考就回答了第一个问题,说的比较短,老师就半自然半解围地问了我第二个问题(所以说软件所的老师还是很nice的)。
之后的十五分钟专业问答,老师主要问了我五六个初试专业课,一个高等数学,两个线性代数,三四个个人情况和一个热点问题。热点问题是问我知不知道区块链,因为老师认为区块链是计算机科学在金融领域的非常重要的一个最新应用。
说实话,复试前我看了很多网上的面试问答大全,而且由于今年没有笔试,我还把往年笔试会考的离散数学的许多概念又看了几遍,把数据库、编译原理、软工的相关教材的第一章看了一遍(没学过啃不动),但是老师并没有问我这些。
我个人的感受是,老师的问题会由浅入深,而且可能期待一些有个人理解的回答。我若是能答上第一个问题,他就会问同一方向的第二个问题,深度会更深,问到答不上来的时候就会自然友善地换另一个方向的问题。我感觉至少就我而言,老师考察的是我对知识理解的深度。
我也了解过一些其他同学的复试情况,如果是科班出身的同学,老师问的专业知识可能会广泛一些;如果是做过老师感兴趣的项目的同学,老师可能会问项目细节。
2019
http://www.cskaoyan.com/thread-654443-1-1.html
面试是在一个会议厅里,时间20分钟,其中PPT讲解20分钟,大概20个老师围坐一圈。
进去先讲PPT,老师再根据PPT提问,这个流程每年都差不多,老生常谈了。在这里我要说一点,如果初试成绩出来后觉得能进复试,PPT一定要早点准备,并且多改多练。
PPT建议做10张或者10张以内,多了你肯定讲不完,万一再讲跑偏了就麻烦了,会留下很不好的印象。另外练的时候就要把讲PPT的时间控制在5分钟以内。
我在PPT里放了我工作做过的几个项目,然后老师就根据PPT里的项目提问,问这个项目代码是不是全是自己写的,项目的主要部分有哪些,以及项目的流程是什么。然后一个胖胖的老师问了几个操作系统的问题,另一个女老师问了这个项目在做的过程中是怎么实现软件测试的,我都一一作出了回答,然后每个回答后面会加一句:我的回答完毕,感谢老师提问。最后老师问了个操作系统内核的问题,我真不会,就老实说这方面问题我还没有接触过,感谢老师提问,然后面试就结束了。不会的绝对不能不懂装懂,否则一旦拆穿,比不会这个问题造成冷场还尴尬。自己感觉面试时间太短了,但出来后大佬们说时间刚好20分钟。
2018
22号上午面试,不同组的考生分开同时面试,我是排D组第三个,我说我D组的情况。面试前十分钟,老师给了我们一个单子,上面有简单几句,说明面试流程,先是自我介绍,然后讲ppt,然后英语口语,最后老师提问。英语口语形式为,老师叫某一个考生面试时,会同时给下一个面试考生一张纸条,上面仅有一句英文形式的。你要利用前一个同学面试的这段时间,看懂题目,想好作答思路(这个期间可以使用手机百度什么的),然后等下面试时,用英语作答该题。我抽到的口语题目翻译过来是:你喜欢什么样的导师?
老师的提问,主要根据你报的方向和你的ppt内容,老师问了我,查找算法有哪些,最喜欢用什么开发语言,写过的最长代码有多长,团队合作里和学长如何沟通,有没有什么印象深刻的地方。然后还根据我的ppt里提到的我所研读过的一篇论文,连着提问了四道问题:1.说说你看的这篇论文说的什么?2.用大白话说说,这个研究有什么用?3.有没有自己去实现(跑过这个去雾算法的代码)? 4.有没有看过基于关于这个算法之上,有所改进的方法? 这四个题我全都答出来了,估计给我的面试加分了不少。 我分享这个,不是想告诉大家面试技巧,而是希望大家在学习过程中能以一个研究生的标准要求自己去研究问题,知其然,知其所以然。此外老师都挺和善的,没有刻意刁难,都是用很平常的问题,来衡量判断考生能力。
关于面试我还有一点感受是,先面试的比较占优势,老师有耐心听,有耐心问,后面的听说就十几分钟面试一个了。而面试顺序是按考生号决定的,号小的先面试,所以考研报名的时候,要早点报名,让自己的考号小一点,这会带来面试时的优势。
2017
面试,尬聊。因为本以为简单英文介绍和ppt讲解就没事了,结果问了好多……最最遗憾的是,好几个老师在问同一个问题,你做项目时候,有没有遇到什么困难和难点,我回答是比较简单,都是参考书上能查到的,所以没啥难点,老师问过好多次,我都这回答,逼急了,我回了句,环境变量第一次配的时候,挺难的
……现在想想,真是智障。
面试内容我总结下:
1,英语,自我陈诉后问问题,今年c组好像都有问到你有没有什么印象深刻的teamwork?
2,ppt自我介绍。
3,重点会问项目经历
4,开放性问题,生活类,例如你们学校的XX老师你认识么……之类的
5,好的本科院校和初试成绩蛮重要的,老师会认为你基础就是这个,加成比较大
6,今年数学我没有被问到什么。
中午吃过饭后,就是下午的面试,之前本来以为复试会几分钟十多分钟就结束,不过后来看看基本上每个人都问到了20分钟的时间。总体过程也是中规中矩,先讲PPT进行自我介绍,然后有的老师看我本科的专业是硬件方向,问了一些为啥报考这个方向之类的。后来老师让用英文介绍了一下自己学校所在的城市。后来有个老师问了个专业相关的问题,就是知不知道流水线,然后流水线的吞吐率怎么算,知不知道操作系统里面的流水线是怎么回事,这个我确实有点忘不太清楚,我就如实回答了。后来最后老师让讲了一个自己认为的独立完成的论文或者项目是否有创新点,以及创新点体现在哪里的问题。我觉得自己答得也不是很好。
2016
关于自我介绍的建议:
1) 一定要事先设计好你的简历、自我介绍、PPT哦(这三个其实是你自己的不同表现形式,其实是统一的),设计好你的自我介绍让老师老老实实进入你的坑,比如你重点介绍一个项目,让老师自然而然的问你关于这个项目的问题;
2) 我设计的自我介绍是:个人简介(个人信息、学校、性格、个人兴趣)、成绩(初试、本科、六级等、专业课兴趣、获得的奖励)、项目经历+毕业设计、研究生阶段的计划(目的、规划)。其中项目经历着重简要描述其中三个,最主要的是第一个,描述项目应该包括来源、现在的成果如何、做项目的过程是什么、有哪些收获等;毕业设计我也着重准备了。事实证明,面试完全在我的计划之中,包括老师提问的问题大部分都是提前设计好的,这还是蛮有意思的。关于自我介绍+PPT,我私下排练了很多遍,到了面试时才能自然而然的说出应该说的,讲解的内容如果能达到”必 要充分“的程度真的是极致完美了;
今年的经验是,如果PPT上讲的比较全,英语就是让你自我介绍。有一个哥们PPT没讲兴趣爱好,然后就被问到了(当然兴趣爱好也算是应该准备的)
总体来说,C组的老师都比较和蔼,尤其是软工的。问我为什么报软件所,我说口碑好,老师说看来是不够严厉啊。。。
面试时间的话,每个人15-20分钟吧。面一半会休息十分钟。
然后软工和人机的笔试机试是分开的,题目好像也不一样。
2015
然后考完下午就是面试,面试等待还是比较蛋疼的,大家等着等着聊的也都比较随意,气氛也就还好,不会过于紧张。我是第六个面试,进去先讲PPT,圆形会议桌,你坐在电脑前,电脑文件夹里有你之前发过去的ppt,播放时要采用排练计时模式,因为要求讲完ppt要在五分钟内,但一般没见到有人会超时,所以也不知道超时后是啥结果。。。我因为紧张3分多钟就讲完了。然后老师就会问问题,主要是问项目吧,不会太涉及主要算法细节之类的,只会问大致内容啊,可能看看这个软件是不是你自己做的或者是你参与比重占多少。这部分过程因为软件全程是我自己做的所以有问有答还挺欢快的。然后有问及图形学的知识(可能跟我们之前聊得一些东西有关系)然后根据往年经验就不会就说不会,我本科没有学过图形学相关课程。老师还愣了下互相看了一下,然后问你对图形学有什么了解,我就随便讲了点。最后英语口试,讲的一塌糊涂,我前面有人被问大学生活的,家乡的,问到我的时候问的是你爱好的课程是什么= =然后我随便讲了几句就讲不下去就that’s all老师这时候是觉得我还能挽救一下?然后又问你用英语回答一下当你面对别人批评的时候你会怎么做= =我去 前面那个我都不咋会你问我这个我能会多少?又吭哧憋肚瞎答一通鞠个躬就走人了。
2014
下午开始面试,A组有15个同学,每人大约15分钟左右,挺快的,进去首先英语自我介绍,然后讲PPT,完了老师开始发问,问题很随意,问我的问题:学过概率吗?学的怎么样?讲讲你的项目担任的角色,都做了些啥?为啥报这个方向?不能外保吗?你们年级能保几个?我作为我校学生代表去日本交流过,还有其他一些代表活动,有个老师就问:就一个名额,你觉得自己有什么优势争取到的?你们学校是内定的还是竞选的?(可能看到我的唯一代表活动有点多,老师质疑了···)。还问喜欢编程吗?反正就是写很随意很简单的问题,很快就让我出来了。
今天导师打电话要我去聊聊,就问问我想不想,有没有信心跟她读研之类的。感谢啊!
这是最纠结的,因为学校不太好。。。所以你懂得!那就好好看看专业课和数学。过程:首先讲讲PPT(我是第一个,所以时间长点老师不会打断我,但是后面的就不行了),然后让我读一段关于马航的英文报道,并说下观点(我太坑,没说好,学弟学妹们注意,不管怎样,说几句完整的句子!!!切记啊!!!)。然后问我数学、专业课哪门学得好,就算了,又问我北京的雾霾怎么看?又是怎么形成的?刚开始以为是老师不要我了,不过马上就明白了,其实老师是看你的思维方式(这点大家注意,老师是不会随便问你问题的,每个问题一定有问题!)。最后走了,我忘记了一句话:老师如果给我个机会,我一定会好好努力的!
大家尽量不要被老师吓到就行了,我有八个老师面试,讲PPT时,还有两打电话,搞得我大声讲也不是,小声也不好!╮(╯▽╰)╭。。。对了,最重要的是礼貌!!!
下午面试,我排在第二个,当时紧张的要死,一开始是先让你用ppt自我介绍,然后会给你一篇英文文章让你读,貌似是习大大参加关于核能的某个会议的新闻,文章不难,不过里面有几个地名和人名我没认出来,当时有点尴尬,然后读完之后边上有个老师用英语问我对这个事情的看法,我当时挺紧张的说的也磕磕巴巴的,然后有总共有3个老师问我问题,问我对我报考的方向的了解程度,性格啊,对计算机方向的了解程度啊(因为我是跨考生),毕业之后将来的打算啊,你在大学都做过哪些项目啊之类的,然后主持的那个老师问我你在大学学的数学课程哪门最好,然后我说了高数,然后他问我极限是啥,我当时一紧张就没回答上来,磕磕巴巴说了一堆老师好像也不太满意,这里我觉得如果想不出来就老老实实说自己忘了比较好,不过也没有后悔药吃了,然后最后一个问题是作为一个跨考生你的专业基础肯定没有计算机专业的扎实,那么你将来如果在这里读研会不会有压力什么的,然后我回答说基础不如别人是肯定的,但是因为我对计算机技术很感兴趣,通过自己的努力相信能把这些差距追上,然后就结束了,整个面试大概15分钟左右。面完就没事了。
我面试前,在外面等候,看到前面的准备的ppt,说项目经验,感觉很水(全是课程作业)。我顿时信心大增,期间还有个巴基斯坦的博士和我聊天说要sell yourself。
很逗比的一点是,我进去了,那英语噼里啪啦说了一通之后,正准备拿中文说项目经验的时候,老师说,哎你英语好,继续拿英语说,我说,可能中文表达要准确一点。结果老师都笑了。
然后说了一些项目经验,期间问了一些问题,软件测试啊,软件工程啊等等。不过没有问太多的技术问题,这个让我比较失望。基本上是闲扯。总结一个字,忽悠!当然你得准备忽悠的资本。听学长说其实面试就是差不多走个过场,导师觉得你不错,就把你要了。同行的有个计科的,做信息安全的,之前在金山实习,比较叼,老师也是当场给offer。
等了差不多6天,结果出来了,还是非常高兴,复试成绩出人的好。
复试:一定要知道“备足则攻成”,寒假我还关注各方调剂信息以及投简历找工作,当然多准备为好,还报了个口语班。把时间都利用起来好一些。后来成绩出来就准备复试,根据去年的经验帖子上的复习的,结果是我们笔试的考了好些C++,这个应该就是所谓的综合吧。面试很出乎意料,我讲完个人简介PPT,老师只问了我的高考成绩(可能老师想是我简历那么优秀,怎么会在西邮吧,呵呵,自恋一下),事实是我真的是调到这里的,老师也没问我英语(准备那么久,本来还想说两句呢),后来我同学和学长都说是因为暑假面试过了,老师比较了解确定要的话就不会问那么多。应该就是的。面试都是比较看重本科成绩和项目经验的,还有要有良好的精神面貌,表现出不卑不亢的自信感,大概经验多了就好些,我也是一直都在努力。
面试
B组每个实验室题目可能不一样,但是面试是在一起的。
首先讲ppt, 本来是说能讲5分钟的, 结果可能只给3分钟左右。
我报的基软, 老师没有问我专业知识有关的内容, 问的问题都是和个人相关。
比如老师问了我本科成绩为什么不太好, 是不是第一次考研(我是12年毕业的,当时毕业直接去工作了)
然后用英语问了这两个问题: 你的梦想是什么(我ppt谈到过), 你会不会中途离开ISCAS(我是工作不满意后辞职考研的)。
2013
之后是下午面试吧,面试是两点开始的,我们组一共是11个人吧。每个人的面试时间大约是15—20分钟。一开始我们11个人坐在会议室里,气氛很紧张,我找了旁边一哥们聊了一下,缓解了一下压力。之后老师过来了,让还没轮到面试的在另外一个地方等。我是第六个面试的,之前的几个面试时间平均在17分钟左右,刚面完的哥们被围城一圈,大家纷纷向他请教。轮到我了,心里直扑通扑通跳,对面坐了七个老师,坐在两侧,老师示意让我坐下,操作自己的PPT,我对着自己的PPt做了个自我介绍,约五分钟。然后老师根据PPt上面的内容开始提问了,因为我是跨专业的(本科学的是电子信息)考生,老师就问了一下我本科的学习情况,成绩排名,还有就是某些课程为什么没考好啦,为什么没有选修很多软件方面的课程啦,代码量是多少,对自己报考专业方向有多少了解等等。
在面试过程中,老师一般也不会为难学生,对于自己不了解的问题,就直截了当的说不知道好了,不要瞎扯,因为一旦被老师发觉,就会留下不诚实的坏印象。
我们组今年的面试老师没有用英文提问,这是出乎我意料的,之前准备的英文介绍没用上。不过貌似其他组有些要求,比如用英文讲几页自己的PPt等等。
对于我们(F)组其他人的情况,据说多是问一些项目相关的问题,问的比较细。
面试结束后在北京多呆了一天等消息, 顺便再说句,软所招办的李老师人还是不错的,也很负责,从她那打听到消息后就回去了。
这时候B老师笑呵呵的开始提问了,你一志愿报的分布式理论与技术吧,那说说你对分布式的了解吧,然后我balabala一通的说完,其中我说到了这个有点类似于分治法。B老师就说 那这个也就像MapReduce了,那除了MapReduce你还了解些什么分布式的东西,我就说 Google的GFS、BigTable。他继续说 那你任选这三个概念的一个解释下 这时候我就是开始扯了,“BigTable是存储数据节点的XXX(非关系数据库模型,我不记得了),然后再利用MapReduce工具进行处理这些分布式的数据节点,我大概就知道这么点,不好意思” B老师貌似对这个答案不满意,但也没继续说什么。
C老师这时候拿着成绩单也开始发问了,你本科学过离散数学吧(汗,我考了92,所以老师才问。但全给忘光了,而且那时候我们上的是英文教材完全不知道中文是什么意思),那你说说有什么内容 我开始瞎扯一番,最后说了一个数理逻辑。C老师就说 那数理逻辑具体有什么内容吧 我说 命题逻辑、一阶谓词逻辑、谓词演算等等,人工智能我们也上过一些内容。C老师就继续说 那命题演算和谓词演算有什么区别么 那时候我基本上B老师的快速提问问懵了,所以直接说 不知道。
此时B老师又开始问我项目问题了,问我毕设的事情,因为我毕设在1月份考完研的第一周就开始做了,在Linux下开发的,不过问的问题都好简单,问这项目是什么,具体怎么做,你目前进展到哪了。这些问题都很好回答。这时候A老师(我的导师就是A老师,小组组长,人很nice)开始发问了,问我第一个项目(是优秀项目奖),这个项目是团队项目还是个人的,代码量多少,你具体的工作是什么, 然后我balabala一通,感觉答得还行。,确实挺奇怪的,我自我介绍的时候挺紧张,回答专业问题的时候我特别淡定,基本上都很清晰的表述出来了,不懂的就直接说不知道了
我还一直期待着A老师问我的第二个项目问题,结果B老师又开始专业问题了。请说出测试进程上下文切换的反应时间的方法,这是在我在OS课上做的一个课程实践,因为自己做过所以很快的说出了两个具体的解决办法 信号量和管道机制。。。balabala一通之后,B老师那种奇怪的笑又开始了 那如果系统是多核的,用一对管道和一对父子进程测试反应时间,结果影响会很大的。我就说我仅仅在双核系统上做过测试,多核的不知道。又被问懵了。(04-08更新,搜了下多核的context switch花销时间对比http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html)
A老师这时候开始给我圆场了,问了一些简单的问题,你这些项目基本上都偏Java,那你对C/C++感兴趣么,你做过一些比较大型的C类的项目么,我说我很喜欢C++,但是具体到项目感觉做的不是很好,然后没办法扯出了我MFC的课程实践,真的忘光了。就说什么文件管理系统,其实说错了(我做的是类TotalCommander,一时紧张忘记说了),后来老师给我解释了一番。。。最后A老师说 你本科学数媒的,那为啥不报我的图形学啊(后来才知道他只是帮他图形学同事招生,我还以为他就是那个方向的) 这时候我基本上就特老实的回答问题了(被前面的问题给问蒙了,稍微深一点的都没答上来),然后我就说 我只知道Bresenham画线画圆算法、真实感图形绘制、Nurbs曲线等等一些理论和概念,但是我学的不好。这时候其他老师都没问题了,就这么结束了。
出了房间,我就开始后悔了,我忘了补充说一句 如果老师给我这个机会的话,我一定会努力学习的。
不过我要解释一下:我本科学了一些图形图像的知识,还要学会操作PS、MAX、Maya等软件,但是那些偏艺术类的东西我啥都不会,而且学的时候都特痛苦,我是真的不太喜欢图形学方向,所以那时候就特老实的回答说,学得不好,然后就没有下文了。
PS:说真的,老师表示对你有兴趣且你对这个方向不是很反感,可以说你学得不好,但一定要说 你对这个方向还是很感兴趣的,会有什么什么改进的话,那天晚上在群里被硕哥批的时候我都很不好意思,硕哥,真心对不起。希望下届学弟学妹一定要记住这个教训,我当时确实有点SB了,忘了委婉的答复了。焦急的一晚上过去了结果第二天A老师给我打电话了,他说我是搞程序设计、验证与测试方向的,我对你的个人陈述很感兴趣,你愿不愿意读我的研究生。我当时啥都没想,就说愿意。特别机缘巧合的是我本科导师的方向和A老师方向一模一样,一志愿软工没去成,最后A老师要了我。
总结一句,这一路走来我觉得有很大的运气成分吧,单科卡线了,最后由学硕调成专硕了;当面拒绝老师,最后老师还是要我了。
我觉得我能做好的一件事就是很自信的把自己曾经做过什么项目,做过哪些实践冷静清晰的描述出来。
最后总结下我的感受吧,码了这么多字了。1 个人自我陈述很重要 面试时基本上只有3-4个老师问你问题,这些老师中,1个老师负责看你ppt自我介绍,1个老师看你本科成绩单,最后两个或一个就看你写的个人自我陈述。
所以个人自我陈述一定要写好了,我当时码了2000多个字,估计A B老师都对我的经历感兴趣,所以才问了那么多。另外老师看你成绩单主要是看高分科目,高分科目的内容一定要提前了解2 多看计算机专业内的一些国内外著作吧 综合类的比如说浪潮之巅,数学之美,黑客与画家,专业点 深入计算机系统、算导、Linux内核、C和指针随便翻翻吧等等,部分科目还要自学的。4月1号跟A老师交流的时候他就说看重我一点的就是对计算机的兴趣,主动去看了这些书,但他也说 选择我是在赌博,因为国重实验室要求编译原理、体系结构、数理逻辑、算法分析,而你这些都没学过。而且你专业课基础不太好啊(单科卡线),这几个月得好好补补了。真的是运气好,最后去了国重。
3 本科所做的一些课程实践很重要,比如OS中编写什么内核、微基准测试、嵌入式开发等等,熟练使用Linux命令行啊等等,这些对复试很有帮助的;另外项目这一块多的话编程语言尽量不要单一,我就只写了java,老师就问有没有C的。
4 回答问题要自信,也要谦虚,不知道的就说不知道;老师对你有兴趣,你不讨厌那方向的话一定要表达出你对那个方向的兴趣和你愿意深入学习的想法。 我这点做得不好,大家一定要记住了
最后要特别谢谢硕哥,感谢软所群里的XDJM们,这一路走来不管结果怎样,我们都在一点一点的成长。
你做过的项目的详细内容,问的非常仔细,要好好准备;
老师可能会问你擅长的科目。你擅长的会问。老师还会看你的成绩单,你成绩好的专业或者数学方面的科目老师会问,数学方面貌似离散问的比较多;
老师可能会问,你对什么什么感兴趣么。这时候潜台词是,我是搞这个的,你感兴趣我可能要你。除非你有特别喜欢或者特别讨厌的。。否则这个问题建议统一答。喜欢;
我本科成绩不太好。老师专门问了下。我想,这个问题自信点吧。毕竟那是过去式了,展现你现在的能力和未来的努力决心。
感谢王道,感谢各位学长,不管最后结果如何,学到的都终生受益。
2013.4.3补充一些面试内容:我觉得软工中心今年的面试非常贴合个人情况,比如你本科成绩有所缺失老师就会提到,会问你的优势弱势(这个应该可以准备一份好听的答案),会问你为什么选择这个实验室,还有问会不会JAVA,MATLAB与LINUX(我不会,但我说会积极学习,但是会的话,我想应该会有点加分),所以总结下来我觉得表现出对专业的兴趣与诚恳向学的态度很重要。值得一提的是,跨科的同学不要担心专业知识的问答,老师不会在这方面为难(一点专业也没问我),因为我也没有什么项目经验,也没问过,所以实践经验少的同学要自信,表现出自己其他方面的优势。英语口语就是最后说下个人介绍,没有问其他的英语问题,不知道以后是否也是这样,不过准备个自我介绍准没错。能想起来的就是这么多了,希望能对后来人有帮助。
面试:前面说了机试做得好的话,面试会加分的,我是第二个进去的,先讲ppt,然后老师就开始提问了,在这里估计是机试加分了,讲完ppt之后,老师都没说话,互相看了看说是不是没问题呀(当时狂汗),然后一个老师看了一下手表,说时间太短,然后问了一下ACM在区域赛上奖牌的百分比各是多少,然后问一些研究生期间的计划之类的,之后就英语问题了,what‘s your favorite programing language?我回答 c plusplus然后问what’s your favorite operating system? 我回答 Ubuntu OS就结束了。汗。。。。我准备了好多自我介绍、介绍家乡的和介绍学校的都没用上。所以大家都不用太担心,老师不会太难为大家的。
英语口语
2019
http://www.cskaoyan.com/thread-654287-1-1.html
时间6分钟,面试完不久就去另外一个会议室开始,再前一个人进去的时候就会抽题。今天题都很怪的
楼主:What kind of a boy/girl would you like to choose to your boyfriend/girlfriden?
大佬1 :critical thinking
大佬2:生活在1980前后哪个更幸福
大佬3:你认为什么是真正的朋友
大佬4:你难过的时候会干嘛。
2017
你喜欢什么样的导师?
2016
关于英语口语的建议:额。。我提前准备好了比较完美的英文自我介绍,结果发现没有英文自我介绍(所以,提前了解清楚情况是多么重要。。),然而之前我觉得不太会问”介绍你的家乡“”介绍你的家庭“”介绍你的学校“等很low很泛滥的问题所以没准备,结果真的问了。。结果我就卡壳了。。所以有备无患,不要懒惰。(摘录在《操作系统王道单科书》上看到的一句话,是说了三遍的一句话,“考研成功的秘诀是反复和多次,偷工减料是要吃亏的”)英语口语不好不会把你毙掉,但是会影响成绩的。
机试题
2016
三、机试题:有四个分值段的题目,分别为2’、3’、5’、10’,第四分值段只有一道,其他多道;考试形式是从一、二、三中各选一道或者选最后一道进行作答(选够10分即可),考试时间60min。注意:考研复试机试题目与历年机试题、保研机试题等可能会有很多重复,所以…
\1. 第一分值段2’
\1) 求最大公约数
\2. 第二分值段3’
\1) 判断一棵二叉树是不是二叉排序树
\3. 第三分值段5’
\1) 01背包问题
1.删除链表中倒数第K个数
2.求一个数组中的乘积最大的连续子数组(有坑。。刚开始以为是求和最大。。。最后十分钟才看出来,,幸亏改过了。。)
PS:编译环境比较宽松,只要你要的学长电脑上有就可以。
2013
发下软件所的机试题,希望能够帮助学弟学妹们。我参加的是软件所B组(软工中心+人机交互)的机试,专硕的机试题我就看了大概,我试着给出回忆版的题目。参加机试之前看了去年的复试贴,考的是图算法,苦练了多次经典的图算法代码最后都没有派上用场,太可惜了。。。::98:: 比重如之前的经验贴所说,笔试占50分,机试占50分。闲话不多说,上机试题目吧。
(第一段介绍,略过。。。)小明想实现一个自动拼写纠错的程序,定义规则如下:
对于一个给定的单词A:
(1)如果单词A出线在单词表中,则表示输入正确,输出单词A;
(2)如果单词A通过交换相邻的一对字母,或者改变单词的一个字母,形成的新的单词B出线在单词表中,则表示单词B可以替换原有单词,则输出单词B;如果在单词表中有多个单词满足上述要求,则输出满足要求的多个单词;
(3)如果(1)(2)都不满足,则认为该单词是人名,不需要改变,直接输出该单词。请你根据上述规则,帮助小明实现该自动拼写纠错算法。
算法输入:
单词表和需要检查的单词(单词表和单词都以小写字母组成)算法输出:
纠错后的单词:如果有多个,则用空格间隔样例:
单词表:acbed acbde abdce abced badce
需要检查的单词 输出结果
acbde acbde
abcde acbde abdce abced
acbdo acbde
scofield scofield 题目不难,就是题目很长,看了老半天才明白意思。运行环境是vs2010或者eclipse,有个别机器上安装了vc6.0,不习惯vs2010的同学们最好适应一下,否则到时候有点小纠结。本人比较习惯用vc6.0,为了安装vc浪费了7-8分钟的时间,幸好最后还是做完了 ,要不真悲剧了。。。另外是采取人工检验case的办法而非OJ,所以对于空格或者回车什么的判断就不重要了。
PS:用一个标记数组来记录当前字符和词库单词的匹配状态,之后通过对标记数组判断是否符合(1)(2)中的一类,如果和所有词库中的单词均不匹配,那么输出原来的单词。注意符合规则(2)的所有单词都要输出。附:D组(专硕)上机回忆版
D组上机占30分,有5个题目,分为AB两类,A类题目一题10分,B类一题20分,要求做够30分即可。A:
(1)给定一个整数,要求输出所有因子。例如:输入4 输出:1 4 2 2
PS:一次循环输出结果,不需要多说吧?(2)给一个数列,要求把奇数位置的所有数放到偶数位置的数前面
PS:最简单的方法是直接模拟,从第一个偶数位置开始不断调换,方法很多能实现就行。B:
(1)给一个数列,求出第K大的数和第K小的数,要求不能使用排序算法。
PS:采用快排的思想做,O(n)内解决。
(2)题目有点复杂,大概是要求输出归并排序的整个过程的中间结果
PS:题目没有认真看。。。忘了。。。(3)简单的动态规划,题目其实就是求最大连续子序列。
PS:基本动态规划题,O(N)的时间复杂度、O(1)的空间复杂度能解决。关于D组的上机题如有记错的地方请大家指正,我一定及时修改。另外,由于是手动测试案例,结果不正确不太要紧,思想正确很重要,变量命名和代码注释等都要算分的,一定要记得写注释。可以看出,软件所的机试题目都不会难,只要大家平时多训练肯定问题不大,有空的时候多去九度刷刷题帮助很大的。今年机试的时候师兄特地吩咐能不用库函数尽量不用,所以不在万不得已的情况下建议不要用STL,可能会影响最终成绩(个人推测,具体情况不得而知)。
笔试结束之后是机试,这个很重要,复试的同学可以好好准备一下,我之前有过ACM经历,所以就一直在看专业课的书没怎么准备这个。机试不难,之前大概看了一下那个九度上的题,感觉差不错,可以从那里练习,其他OJ的话,难度比机试的要大,自己量力而行吧。机试给将近一个小时,三个题,什么gcd,最大字段和(O(n)复杂度),还有背包等等。不算难,大概十几分钟做完了,就在那里愣了一会。