真题解密丨第四弹!北大软微语言信息工程真题深度解读!
所有准备考研的同学都知道,真题练习是备考的关键一环。如果不能对真题有所了解和深度解读,就像箭矢没有方向,高楼没有基础一样,只是在做无用功;而多数考生做真题少则囫囵吞枣地草草了事,多则机械重复地做上两到三遍便以为大功告成,其实这样使用真题的方法是不得要领的。
考研尤其是竞争激烈的名校,专业课试卷本身的绝对难度高,命题人的偏好、命题趋势和动向也不好把握,对于考生来说自我总结分析也是比较棘手的。
小苏希望用我们的力量解决大家现今的困境,通过对真题的研究和反复解读,在考前为大家打磨出了北大软微“真题解密”系列,详解软微近年考情,统计历年真题考频考点,深度解析命题特点、考察方向和重难点,通过历年真题情况给予大家真题命题的分析和预测,解锁高分密码!
考前软微电子信息专业相关方向我们都会为大家深度解读真题,请持续关注公众号动态,每篇“真题解读”文章都经过反复雕琢和打磨,历时甚久,短暂半月,长则1月,精心之作,希望可以帮助大家!
今天我们就针对北大软微语言信息工程历年真题做一次深度分析,并在分析的基础上“预测”一下软微的命题趋势,希望对大家带来必要的帮助。
考题简介
一、形式
分为语言应用能力和信息技术基础部分:
1.语言应用基础(共100分):英译汉(30分),汉译英(30分),编译(40分)
2.信息技术基础(共50分):正则表达式(12分),编程一(13分),编程二(12分),简答(10分)
二、题量
21年北大软微语言信息工程考试共7道题
三、题型变化
由于2021题型突然改变,导致大家应对起来措手不及。所以我对于第一年的预测会略显保守,即分数线会有较大幅度的下降。
不过,从编程题型来看,第一个变化是如无意外的话,《大学计算机应用基础》依旧会考,但难度相比旧题型不会再上升,复习时只需要通读全书并做好笔记即可。
第二个变化是编程本身不能仅仅局限于学语言本身,数据结构和算法也要有所涉及,这也是当初我开设数据结构与算法部分课程的原因。从考试上看来,我的预测是准确的,第二道、第三道编程题考的完全是数据结构和算法部分的内容。所以第二个启示是不仅要学语言,还要用语言本身学习基础的数据结构与算法,这样才能在考试中百战百胜。
基础部分真题解析
一、书写正则表达式,并说明各部分含义(12分)
北美地区的电话号码由一个3位数的区号和一个7位数的号码构成,7位数又分成一个3位数的局号和一个4位数的线路号,局号和线路号之间用连字符分隔,每个号码可以是任意数字,但区号和局号的第一位不能为0或1。在书写电话号码时,人们往往把区号与实际号码之间加一个“-”分隔块,为了排版可能有空格字符。当然,直接连续写出10位数字也可以。+表示国际,1代表美国,有些人也会添加这个国际拨号前缀,有些人不会。电话号码书写示例:
248-555-4321,(313)555-2346,+1-(810)55-1234,+1-712345789等都可以。请注意,请写出一个表达式,识别文本可能的北美电话号码。
解析:
此题是《正则表达式必知必会》中的原题的稍微修改。答案如下:
(+1){0, 1}\(?[2-9]\d\d)?[ -]?[2-9]\d\d-\d{4}
应对方法:
用至少一天的时间精读《正则表达式必知必会》教材,并动手实践书中每一段正则表达式。
二、编程(13分)
给定一个有限单词数的英语词典,遍历并搜索其中的所有对称词(也就是从左往右和从右往左读都一样),包括noon这样“无轴”或者madam这样以d为轴的。解析:
1. 首先我们要搞明白何为“对称词”。题目中已经给出两个例子,noon和madam。这样的例子还有很多,比如PHP、P2P、Bob等等。所以解决的第一个问题是如何用编程判定对称词。既然对称词是从前往后读和从后往前读都一样的词,那么可不可以用编程模拟这一过程呢?
2. 再回看题目第一句话,“给定一个有限单词数的英语词典”,意味着这个英语词典可以被认为一个字符串类型的数组(或列表),而不是哈希表或字典。有些同学看到“英语词典”就迫不及待地使用Python中的字典数据类型,其实这样是不对的,因为在这道题中不是“根据词查大意”,定义字典类型反而增加无谓的麻烦。
可以根据上面两步解析写代码如下:

1.isPalindrome函数用于判定单个单词是不是对称词。如果是则返回True,不是则返回False。具体解析请看代码部分的注释;
2.在main()函数中,第一步工作是对词典文件进行处理。笔者为了方便起见,自定义了一个小规模词典dictionary.txt如图:

可以发现,笔者的词典分了两行,并且每行的单词用”,”(英文逗号)分隔开,那么第一步工作就是将其转化为Python可处理的类型。转换效果如下:

每一行是一个小列表,每一个小列表中是一个一个单词构成的元素。并且它们都嵌套在一个大列表wordlists当中;
3.接下来就是用双重for循环遍历每个单词。如果该单词是对称词,就把它添加到用于输出的res列表中;
4.最后输出即可。
思考:
判定是否对称词,除了从左往右读外,是否也可以从对称轴开始从中间向两边读呢?答案是可以的。只需要在上述代码的基础上对isPalindrome函数进行相应修改即可。修改如下:

三、编程(15分)
用对半查找方法,快速求解出是否存在整数和,使等于用户给定的整数的平方。对半查找的意思类似于翻字典不从头到尾,而从中间开始,判断目标在前(小)半部分还是后(大)半部分,然后从目标区域继续查找,如此重复,以加快速度。
前言:
本题需要用到的算法是“对半查找”,其实就是经典算法二分查找。笔者苏世全程班的同学上课的时候重点讲解过二分查找的过程,并要求能背下来二分查找的原代码,认真听过课的同学这道题至少应得保底分6分-8分,即至少可以熟练写下二分查找的代码。
二分查找的上课讲的代码如下:

或者

实在没有思路,这两段代码必须会默写其中一段,则此题至少可以得到保底分数。
思考:
本题有一定难度,是LeetCode的636题“平方数之和”的修改,链接:
https://leetcode-cn.com/problems/sum-of-square-numbers/
平时在上课是多次强调要去刷LeetCode。如果恰好刷到这道题,那么恭喜你赚到了。仔细读题的话,会发现,且还是整数,正是勾股定理。仔细回想我们熟知的勾股数:

仔细观察勾股数,可以发现:

尝试写代码如下(13~15分):

如果实在不会将二分查找运用在本题中,还有几种方法可以让同学们得到一些分数:
1. 默写背诵的二分查找代码,但不展开下一步,可以得6-8分;
2. 使用math库中的sqrt函数暴力求解,可以得7-8分;
方法二代码如下(7-8分):

由于此方法可以做题,但是效率不高,且没有用二分查找的方法,所以最多只能得一半分。好处在于至少可以在没思路的情况下得一部分分数,且代码简单易懂,总比完全不会好。
四、简答(10分)
简述多用户文件系统中权限和安全管理的知识要点。简单说明即可,无需展开。
解析:
本题属于《大学计算机应用基础》中的知识点,对于复习旧题型的CAT考生来说,此题应为送分题。但由于突然改题型导致有些同学没能阅读《大学计算机应用基础》,导致此题失分较严重。但由于此题题干只要求说明“知识要点”,所以难度还是下降了一些。
参考答案:
用户管理包括用户、用户组、角色的管理,属于操作系统中必不可少的一部分。
用户管理:用户是登录系统的基本单位,一个用户可以属于多个用户组或机构。
用户组管理:用户组支持多个组织机构,一个用户可以属于多个机构。
角色管理:角色是一组权限的集合,通过给用户或用户组赋予角色,使之获得相应的权限。
操作权限管理:定义系统有的操作权限,或者说功能权限。
资源权限管理:资源权限是资源使用的一种授权。资源权限管理的粒度很深,可以进行授权的资源既可以是整个目录也可以是某个报表。
数据权限管理:针对关系表或多维数据集设置的权限,用于控制用户能访问数据的定义。
基础考点及命题预测
一、2022考点预测
编程最有可能考的几个考点。难度从易到难排序。
1.二分查找
2.排序
3.链表的反转、合并
4.广度优先搜索/深度优先搜索
5.最短路径
6.动态规划
二、基础考点
计算机基础考点:
1.CPU的组成及作用
2.OSI七层模型
3.TCP/IP协议
4.三次握手
5.DNS解析
6.非对称加密
三、做题秘诀
给大家一个做题秘诀:拿到卷子后快速扫一眼题。对于不同的题目,要采取不同的应对措施。
1.一眼就有思路的,赶紧写上。
2.一眼没有思路的,做完其他部分再回头过来做。
3.思考一下能做出来的,步骤要详尽,充分表现你是认真思考的。
4.完全没有思路的,可以战略性放弃。
最后,希望大家都能取得自己理想的成绩,成功上岸!