同济大学计算机考研

一、初试

1.院校情况

1.复试名单

(1)2023
在这里插入图片描述
在这里插入图片描述



2.报录比

2023
2022
电子信息专硕。复试68人,录取50人,复试比1.36:1。

总报名人数录取人数总报录比
7731355.7

在这里插入图片描述
链接:https://yz.tongji.edu.cn/info/1029/2838.htm


2021

总报名人数录取人数总报录比
6601584.2

在这里插入图片描述


2020

总报名人数录取人数总报录比
6651484.5

在这里插入图片描述


2019

总报名人数录取人数总报录比
4864211.6

在这里插入图片描述



3.学硕人数

19年52+0
20年43+6
21年46+2
22年42+5
23年44+?





二、复试

(一) 数据库

2016复试题

如果没有上下文,multiple choice 就表示“单选题”(只有一个正确答案),如果是“多选题”,那么就要在后面注明一句话:There may be more than one correct answer。

一、选择题 (Multiple Choices)

1.下列选项中可以唯一确定一个元组的属性或属性组的是
答:候选码

1.Which items can determine all atributes in a relation: (哪些项可以决定关系中的所有属性:)
A. Superkey (超码)
B. Foreign key (外键)
C. Candidate key (候选码)
D. Primary key (主码)

在这里插入图片描述


2.关系数据语言中,是过程化语言的是:
答:关系代数语言

2.Which is the procedural language?
A. SQL
B. Relational Algebra
C. Tuple Relational Calculus
D. Domain Relational Calculus

在这里插入图片描述


3.五大基本关系代数操作:
答:并、差、笛卡尔积、选择、投影,即 ∪ - × σ π

3.Five basic relational algebra operations are _____, others can be derived from these operations.
答案:C
在这里插入图片描述
在这里插入图片描述


4.模式分解(待学习)
在这里插入图片描述


5.下列三个并发控制的事务的调度,属于可串行化调度的是:
在这里插入图片描述
答:


6.DBA的职责是:

6.A DBA’s duties are:
A. transaction processing and concurrency control;
B. security and integrity control;
C. performance monitoring, tuning;
D. database reforming, restructuring, restoration and recovery.

在这里插入图片描述

答:CD有争议,我倾向于选C



二、简答题

1.两段锁协议 (Two Phase Locking,简称2PL)
①两段锁的含义:
事务分为两个阶段。
第一阶段是获得封锁,也称扩展阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。
第二阶段是释放封锁,也称收缩阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。

在这里插入图片描述



2018复试题

一、选择题
(一)数据库:1-10

1.Drawback(s) of file-processing system:
A.Data redundancy and inconsistency   B.Maintain atomicity of updates
C.Data isolation            D.High concurrent access

1.文件处理系统的缺点包括:
A. 数据冗余和不一致性   B. 保持更新的原子性
C. 数据隔离          D. 高并发访问

在这里插入图片描述

答案:BD (GPT4)



在这里插入图片描述

2.Which item(s) can determine all attributes in a relation:
A. Superkey    B. Foreign key   C. Candidate key
D. Primary key   E. Full key     F. Search key

2.在关系型数据库中,可以确定一个关系中所有属性的项是:
A. 超码(Super key)  B. 外码(Foreign key)  C. 候选码(Candidate key)
D. 主码(Primary key)  E. 全码(Full key)  F. 搜索码(Search key)

分析:
①若关系中某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
②关系模型中以主码作为唯一性标识

答案:CD



在这里插入图片描述

3.Which is (are) the non-procedural language(s)?
A. Relational Algebra     B.C     C. SQL
D. Tuple Relational Calculus   E. Domain Relational Calculus

3.哪些是非过程性语言?
A. 关系代数
B. C语言
C. SQL
D. 元组关系演算
E. 域关系演算语言QBE

分析:
①关系代数语言、C语言,是过程化语言
②SQL、元组关系演算、域关系演算,是非过程化语言

答案:CDE



在这里插入图片描述

4.Five basic relational algebra operations are ____,others can be derived from these operations.
A.∩,-,π,σ,×     B. ∪,-,π,σ,⋈
C.∪,-,π,σ,×     D. ∩,÷,π,σ,⋈

4.五个基本的关系代数操作是____,其他操作都可以由这些操作衍生出来。
A. 交(∩),差(-),投影(π),选择(σ),笛卡尔积(×)
B. 并(∪),差(-),投影(π),选择(σ),自然连接(⋈)
C. 并(∪),差(-),投影(π),选择(σ),笛卡尔积(×)
D. 交(∩),除(÷),投影(π),选择(σ),自然连接(⋈)


分析:
五种基本关系代数运算应该是:并、差、笛卡尔积、选择、投影
∪、-、×、σ、π

答案:C



在这里插入图片描述

5.A DBA’s duties are:
A. security and integrity control.
B. performance monitoring, analyzing, and tuning;
C. database restoration and recovery;
D. database reforming and restructuring;
E. transaction processing and concurrency control;

5.数据库管理员(DBA)的职责包括:
A. 安全和完整性控制。
B. 性能监控、分析和调优;
C. 数据库恢复和还原;
D. 数据库重构和重组;
E. 事务处理和并发控制;

分析:数据库管理员负责确保数据库系统的高效、安全和稳定运行,这包括上述所有职责。

答案:ABCDE



在这里插入图片描述

6.In a relational database, given R<U, F>, U={A,B,C}, F={A→>B, B→>C,C->A}, a decomposition of R is ρ={AB, BC}, and the decomposition is:
A. lossless-join, dependency preserving   B. lossless-join, not dependency preserving
C.lossy-join, dependency preserving     D. lossy-join, not dependency preserving

6.在一个关系型数据库中,给定 R<U, F>,其中 U={A,B,C},F={A→>B, B→>C,C->A},对 R 的一个分解是 ρ={AB, BC},这个分解是:
A. 无损连接,保持依赖
B. 无损连接,不保持依赖
C. 有损连接,保持依赖
D. 有损连接,不保持依赖

正确答案是 B. 无损连接,不保持依赖。

这是因为,分解 {AB, BC} 是无损的,因为 AB 和 BC 的交集 BC 在其中一个分解的关系中是超键,满足无损连接的条件。但是这个分解不保持依赖,因为原始的函数依赖集 F 中的 C->A 不能被分解后的关系直接表示,因此依赖不被保持。



在这里插入图片描述

7.For the following schedules of three transactions in concurrency controlthe serializable schedules are:
A.r1(A)r1(B)w2(B) w1(A)r3(B) w3(B) r2(B) r2(A)
B.r1(A)w2(B) r1(B) w1(A) r3(B) w3(B) r2(B) r2(A)
C.r3(B)w3(B)r2(B)r2(A)r1(A) w2(B) r1(B) w1(A)
D.r3(B)r1(A)w3(B)r2(B)r2(A) w2(B) r1(B) w1(A)


7.在并发控制下,以下三个事务的调度中,可串行化的调度是:
A. r1(A) r1(B) w2(B) w1(A) r3(B) w3(B) r2(B) r2(A)
B. r1(A) w2(B) r1(B) w1(A) r3(B) w3(B) r2(B) r2(A)
C. r3(B) w3(B) r2(B) r2(A) r1(A) w2(B) r1(B) w1(A)
D. r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A)

正确答案是 C. r3(B) w3(B) r2(B) r2(A) r1(A) w2(B) r1(B) w1(A)。

这个调度是可串行化的,因为它可以重排为一个不冲突的串行调度,即所有事务的操作按顺序执行,没有违反事务间的数据依赖性。在这个例子中,事务的执行顺序可以是 T3, T2, T1,这使得调度变得可串行化,而不会导致数据冲突或不一致。



在这里插入图片描述

8.When we generate relational schemas from an E-R diagram, the rules for
relationship sets are:
A. for a binary 1: n relationship set, translate it into a relation, and the primarykey of the relationship set is the primary key of the “1” side entity set;
B. for a binary 1: n relationship set, translate it into a relation, and the primarykey of the relationship set is the primary key of the “'n” side entity set;
C. a binary 1: n relationship set can be united with the “1” side entity set, andtranslated into one relation;
D, a binary 1: n relationship set can be united with the “'n” side entity set, andtranslated into one relation


8.当我们从实体-关系(E-R)图生成关系模式时,关系集的规则是:
A. 对于二元1:n关系集,将其转换为一个关系,并且关系集的主键是“1”端实体集的主键;
B. 对于二元1:n关系集,将其转换为一个关系,并且关系集的主键是“n”端实体集的主键;
C. 二元1:n关系集可以与“1”端实体集合并,并转换为一个关系;
D. 二元1:n关系集可以与“n”端实体集合并,并转换为一个关系。


正确答案是 C. 二元1:n关系集可以与“1”端实体集合并,并转换为一个关系。

这是因为在1:n关系中,“1”端的实体在每个关系实例中是唯一的,因此可以将“1”端实体的属性和关系集的属性合并到一个关系中。这样,这个合并的关系就能够表示两个实体集之间的关系,同时保持数据的完整性和一致性



在这里插入图片描述

9.If R∈BCNF, then:
A. all key attributes are entirely functional dependent on each candidate key thatdoes not contain them
B. all partial dependencies and transitive dependencies are removed for anyattributes;
C. non-attributes are entirely functional dependent on non-key attributes;
D. all anomalies are removed within any dependency scope.


9.如果一个关系处于BCNF(Boyce-Codd Normal Form,博伊斯-科德范式),那么:
A. 所有关键属性完全函数依赖于不包含它们的每个候选键,
B. 移除了所有的部分依赖和传递依赖对于任何属性;
C. 非关键属性完全函数依赖于非关键属性;
D. 在任何依赖范围内移除了所有异常。


正确答案是 B. 移除了所有的部分依赖和传递依赖对于任何属性。

BCNF是一种更加严格的第三范式(3NF),它要求所有的非平凡的函数依赖都是关键属性对候选键的依赖。这意味着在BCNF中,不仅仅移除了部分依赖(第二范式的目标),还移除了传递依赖(第三范式的目标),从而减少了数据冗余和更新异常。



在这里插入图片描述

10.Which protocol(s) ensure(s) freedom from deadlocks:
A. The Two-Phase Locking Protocol;
B. The Timestamp-based Protocol;
C. The Graph-based Protocol;
D. The Tree-Protocol;


10.哪种协议保证了没有死锁:
A. 两阶段锁定协议;
B. 基于时间戳的协议;
C. 基于图的协议;
D. 树协议;

正确答案是 B. 基于时间戳的协议。

基于时间戳的协议通过为每个事务分配一个唯一的时间戳来防止死锁。这种方法依赖于时间戳的顺序来决定事务的执行顺序,从而避免了可能导致死锁的循环等待条件。



(二)C语言:11-15

11.Which of the following logic expressions can express 'at least and atmost that x or y is negtive’.
A.x<0 != y<0
B.(x<0) + (y<0) == 0
C.x* y <= 0 && (x<0||y<0)
D. x*y<= 0 || x<0 && y== 0 || y<0 && x==0


11.以下哪个逻辑表达式可以表示“至少且最多只有x或y是负数”:
A. x<0 != y<0
B. (x<0) + (y<0) == 0
C. x * y <= 0 && (x<0 || y<0)
D. x * y <= 0 || x<0 && y == 0 || y<0 && x == 0

正确答案是 A. x<0 != y<0。

这个表达式表示 x 小于 0 的情况与 y 小于 0 的情况不同,即它们之中只有一个是真(即只有 x 或 y 其中一个是负数,另一个不是),满足“至少且最多”这一条件。

在这里插入图片描述



12.Given:int a={2,4,6,8,10},*p=a+2; then the value of the(p+1)[1]*p[-1] is expression
B. 24
A.20
C.32
D.40

12.给定:int a={2,4,6,8,10}, *p=a+2; 那么表达式 (p+1)[1]*p[-1] 的值是
A. 20
B. 24
C. 32
D. 40

正确答案是 C. 32。
首先,理解表达式中的指针操作:*p=a+2 表示指针 p 指向数组 a 的第三个元素(即值为 6)。因此 p+1 将指向数组中的下一个元素(值为 8),p+1[1] 是指向 p+1 后面的第一个元素(即值为 10),而 p[-1] 是指向 p 之前的一个元素(即值为 4)。所以,表达式 (p+1)[1]*p[-1] 等于 10 * 4 = 40。

在这里插入图片描述



13.Given: int x=3, y=2,z=1; then the value of z after the execution of theexpression “z+=x>y?++x:y–;” is ____.
A.5   B.4
C.3   D.2


13.给定:int x=3, y=2, z=1; 那么执行表达式 “z+=x>y?++x:y–;” 后 z 的值是____。
A. 5
B. 4
C. 3
D. 2

正确答案是 B. 4。

这个表达式使用了条件运算符(也称为三元运算符)。首先比较 x 是否大于 y,如果是,则执行 ++x(x 自增),否则执行 y–(y 自减)。由于 x(3)大于 y(2),所以执行 ++x,x 变为 4。然后,z += x 的结果是 z = z + x,即 1 + 4 = 5。因此,z 的值变为 5。

在这里插入图片描述



14.Given the following definition int w[3][4]={{1,2},{3,4}},*p=&w[1][0];,
the value of the following ______expression is 4:

A .w[1][2]
B. *(p+1)
C. w[2][1]
D. p[1]+1


14.给定以下定义 int w[3][4]={{1,2},{3,4}}, *p=&w[1][0];,以下表达式的值是 4:

A. w[1][2]
B. *(p+1)
C. w[2][1]
D. p[1]+1

正确答案是 B. *(p+1)。

首先,w[3][4] 是一个二维数组,初始化为 {{1,2},{3,4}}。由于只初始化了前两个元素,其余的默认为 0。所以数组实际上是 {{1, 2, 0, 0}, {3, 4, 0, 0}, {0, 0, 0, 0}}。
指针 p 被初始化为 &w[1][0],即指向数组的第二行第一个元素(值为 3)。因此,*(p+1) 指向 p 后的下一个元素,即 w[1][1] 的位置,其值为 4。

在这里插入图片描述



15.Given:
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
then the output of the following statement is_____.
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A.3 5 7
B.3 6 9
C.1 5 9
D.1 4 7


15.给定:
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
那么以下语句的输出是_____。
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);

A. 3 5 7
B. 3 6 9
C. 1 5 9
D. 1 4 7

正确答案是 A. 3 5 7。

这个循环遍历 k 从 0 到 2,打印 a[k][2-k] 的值。所以,当 k=0 时,打印 a[0][2](值为 3);当 k=1 时,打印 a[1][1](值为 5);当 k=2 时,打印 a[2][0](值为 7)。因此,输出是 3 5 7。

在这里插入图片描述
在这里插入图片描述



二、简答



(二) 编译原理



(三) 机试

22020同济大学电子与信息工程学院计算机系夏令营机试题目

IDE:DEV C++
第一题:签到题(10分)

题目要求:
键盘依次输入 4 个字符串,分别是临时学号、姓名、报考类别和本科学校,按右对齐方式输出,要求其中最长的字符串输出时左边无空格,4 行的冒号对齐,冒号为半角字符,前后各一个空格

输入要求:
1、四个字符串均不含空格,长度不超过 40
2、不考虑输入错误

输出要求:
1、共四行,不要有多余的空行
2、每行最后无多余的空格或其它字符
输入示例1:
在这里插入图片描述
输出示例1:
在这里插入图片描述
输入示例2:
在这里插入图片描述
输出示例2:
在这里插入图片描述


我的代码:(运行环境使用DEV C++,该环境中一个汉字size为2,占据2个格。而使用clion则发现,一个汉字size为3,却只占用1.5个格,从而无法实现右对齐)

#include <iostream>
#include <algorithm>
using namespace std;

void Space(int n){ //输出n个空格
    for(int i = 0; i < n; ++i){
        cout<<" ";
    }
    return;
}

int main(){
    string id,name,grade,school;
    while(cin>>id>>name>>grade>>school){
        int maxLen = max({id.size(),name.size(),grade.size(),school.size()});
        Space(maxLen-id.size());
        cout<<id<<" "<<":"<<" "<<"临时学号"<<endl;
        Space(maxLen-name.size());
        cout<<name<<" "<<":"<<" "<<"姓名"<<endl;
        Space(maxLen-grade.size());
        cout<<grade<<" "<<":"<<" "<<"报考别"<<endl;
        Space(maxLen-school.size());
        cout<<school<<" "<<":"<<" "<<"本科院校"<<endl;
        
    }
}



第 2 题:递归(20 分)

题目要求:
1、键盘输入 2-9 间的数字,输出对应的数字三角形
2、采用递归方式完成,整个程序中不允许出现循环(for、while、do-while、if-goto 均不允许)
3、给出预置的 cpp 文件,其中 main 函数不允许改动

输入要求:
1、输入一个 2-9 间的整数
2、不考虑输入错误

输出要求:
1、若输入的数字是 n,则共输出 n 行
2、每个数字之间加一个空格,每行的最后一个 1 后面,既可以有空格,也可以无空格

示例输入输出1:
在这里插入图片描述
示例输入输出2:
在这里插入图片描述

我的代码:

#include <iostream>
using namespace std;

void Num(int i){ //每行
    cout<<i<<" ";
    if(i != 1)  Num(i-1);
    else        return;
}

void Line(int n,int i){ //多少行
    if(i <= n){
        Num(i);
        cout<<endl;
        i++;
        Line(n,i);
    }else{
        return;
    }
}

int main(){
    int n;
    cin>>n;
    Line(n,1);
    return 0;
}
同济大学计算机系课程《编译原理》大作业项目词法分析器LR1语法分析器 同济大学计算机系的《编译原理》课程的大作业项目包括词法分析器和LR1语法分析器的实现。这个项目是编译原理课程中的一个重要实践环节,旨在帮助学生理解和掌握编译器设计的核心概念和技术。 词法分析器是编译器的前端,负责将源代码字符串转换为一系列的词素(tokens),这些词素代表了源代码中的基本元素,如关键字、标识符、常数和符号等。而LR1语法分析器则是编译器的中端,它接收词法分析器输出的词素流,并根据给定的语法规则分析出结构化的语法单元,如抽象语法树(AST)。 在实现过程中,学生需要掌握词法分析器的构造,包括如何定义词法规则、如何识别不同的词素类型,以及如何处理字符串中的空白字符和注释。同时,还需要了解LR1语法分析器的原理,包括如何构建LR1自动机、如何生成LR1分析表,以及如何使用这些表来分析输入的词素序列。 这个项目不仅要求学生对编译原理的理论知识有深入的理解,还要求他们具备一定的编程能力和算法设计能力。通过这个项目,学生可以更好地理解编译器的工作原理,并能够实际操作和调试一个简单的编译器前端。 有关这个大作业项目的更多详细信息,包括源代码和实验报告,可以在优快云文库中找到相关的资源。这些资源提供了关于如何实现词法分析器和LR1语法分析器的具体指导,包括源代码示例、设计文档和实验报告。这些资料对于理解和实现编译原理课程的大作业非常有帮助。
同济大学计算机复试题目一般包含以下几个方面: 1. 专业基础知识:复试会针对计算机相关的基本知识进行提问,如数据结构、算法设计与分析、操作系统、数据库等。面试官可能会问一些基于具体场景的问题,以考察学生对知识的掌握与应用能力。 2. 项目经验与实践能力:面试官可能会询问学生曾经参与的项目情况,以及具体负责的工作内容和项目成果等。同时也会关注学生的实践能力,例如是否曾参加过相关比赛、开发过个人作品、拥有自己的技术博客等。 3. 学术研究潜力:同济大学计算机复试也会关注学生的学术研究潜力。面试官可能会问学生是否对某个领域的研究感兴趣,是否有过科研经历或发表过论文等,以考察学生在科研方面的积极性和潜力。 4. 英语能力:同济大学计算机复试过程中也会进行一些英语面试,以考察学生的英语听说能力。面试官可能会要求学生用英文介绍自己、谈论技术话题或回答一些英文问题。 5. 综合素质与个人特长:面试官可能会问学生一些与个人综合素质相关的问题,如对学校的期望、未来的规划、个人特长等。这些问题旨在考察学生对自身发展的认识和规划,以及学生是否有适应同济大学学习环境的能力。 对于这些问题,我建议准备好相关的专业知识,复习一下基本的数据结构与算法,找到自己参与过的项目,并准备好能够详细介绍的材料,同时对自己感兴趣的研究领域也有一定的了解。此外,也要保持积极的学习态度和良好的沟通表达能力,在面试时展现出自己的个性和特长。最后,不要忘记提前准备一些英语口语练习,以确保能够顺利应对英语面试环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱德华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值