甘肃电信“创翼杯”零代码应用及自研软件开发竞赛
个人笔试题目
一、单选题(每题1分,共40题,总分80分)
1、在研发云平台上,以下最适合在每日站会时使用的工作项视图是:( )。
- 所有工作项
- Backlog
- 需求面板
- Sprint任务面板
在研发云平台上,Sprint任务面板最适合在每日站会时使用。因为它能直观显示每个任务、缺陷、故障当前所处的状态,便于团队负责人和成员快速了解进度,进行状态更新和讨论。
2、以下关于流水线触发规则配置中Gerrit事件触发描述正确的是( )。
- 事件触发包含代码提交评审(Pachset Created),代码合入(Change Merged),代码更新(Reference Updated)三类事件
- Gerrit事件触发类型与流水线模板无关
- 修改流水线配置的支持修改Gerrit事件触发类型
- 以上答案都错误
Gerrit事件触发确实包含了代码提交评审(Pachset Created)、代码合入(Change Merged)和代码更新(Reference Updated)三种类型。这些事件能够根据代码库的不同变化自动触发流水线的执行,从而实现自动化构建、测试和部署等流程。因此,选项A是正确的描述。选项B和C虽然在某些情况下可能成立,但它们并不是Gerrit事件触发机制的核心特征,而选项D显然与事实不符。故正确答案为A。
3、研发云中不会与自动化测试脚本关联的是( )
- 测试数据
- 环境配置
- 测试用例
- 测试缺陷
在研发云中,自动化测试脚本通常会与测试用例、环境配置以及在测试过程中发现的测试缺陷进行关联,以实现测试的自动化执行、结果分析和缺陷跟踪。然而,测试数据虽然对测试脚本的运行至关重要,但它通常被看作是测试脚本的一部分或者是独立的数据文件,而不是作为与测试脚本直接关联的对象。因此,选项A中的测试数据不会直接与自动化测试脚本关联。
4、如何搜索docker的nginx镜像?( )
- docker find nginx
- docker run nginx
- docker pull nginx
- docker search nginx
5、关于研发云的各个全景视图和仪表板中的数据的更新时间,以下说法错误的是:( )
- 大部分的指标的最新更新时间为前一天
- 标题包含“今日”的更新时间为实时
- 所有指标的更新时间为实时
6、研发云平台创建流水线,配置“服务部署”流程时,发现没有部署任务选择,最可能的原因是( )。
- 网络问题
- 该账号没有新建过部署任务或没有权限操作已存在的部署任务
- 项目工作区进错了项目
- 流水线前面的配置有错误
选项 B. 该账号没有新建过部署任务或没有权限操作已存在的部署任务,是最可能的原因。在研发云平台中,创建流水线并配置“服务部署”流程时,如果没有部署任务可供选择,通常是因为当前账号没有创建过部署任务,或者当前账号没有权限去操作已经存在的部署任务。这可能是权限设置不当或者是账号角色分配不正确导致的。正确答案是 B.该账号没有新建过部署任务或没有权限操作已存在的部署任务。
7、以下关于流水线触发规则描述正确的是:( )。
- 只有创建新流水线时才能配置使用commitid完成流水线触发
- 修改流水线配置时不支持触发规则修改
- 流水线触发规则的修改依赖创建流水线时是否使用模板
- 以上说法都不正确
选项 D. 以上说法都不正确。
解析:
A. 不正确。流水线触发规则并非仅限于创建新流水线时配置,也可以在流水线创建后进行修改。
B. 不正确。修改流水线配置时,确实支持触发规则的修改,以适应不同的需求场景。
C. 不正确。流水线触发规则的修改并不依赖于创建流水线时是否使用模板,而是可以根据实际需求随时调整。
因此,正确答案是 D. 以上说法都不正确。
8、研发云平台的同一项目下多个子项目需要共享依赖包,最佳实践是在哪个仓库上传共享包。( )
- 父项目制品库
- 分享方子项目制品库
- 使用方子项目制品库
- 机构二方库
选项 A. 父项目制品库。
解析:
当研发云平台的同一项目下的多个子项目需要共享依赖包时,最佳实践是在父项目制品库上传共享包。这样可以确保所有子项目都能够访问这些依赖包,同时便于统一管理和维护。子项目可以直接引用父项目制品库作为私有依赖仓库,从而实现依赖包的共享。
9、研发云的工作项工时不会统计哪个类型的工作项:( )。
- 长篇故事
- 任务
- 测试缺陷
- 现场故障
选项 C. 测试缺陷。
解析:
在研发云平台中,工作项工时通常会统计“长篇故事”、“任务”以及“现场故障”的工时消耗,但一般不会直接统计“测试缺陷”的工时。测试缺陷的处理工时可能会被包含在相关的任务工时中进行统计。
10、使用脚本把公司旧平台上的代码仓库迁移到研发云,在研发云创建代码仓库时应该选择( )的代码
- 创建master、dev、release分支
- 仅创建master分支
- 不创建分支
- 仅创建dev分支
11、在研发云平台上,以下哪个操作容易导致执行部署任务后pod没更新:( )
- 流水线生成制品时使用latest作为镜像标签
- 流水线生成制品时使用commitld作为镜像标签
- 流水线生成制品时使用时间戳作为镜像标签
- 流水线生成制品时使用代码tag作为镜像标签
为什么执行流水线 / 部署任务之后,pod没有更新?
pod不更新,通常是以下的原因导致的:1、用户需要检查新下发的镜像tag(制品-同步记录)和现存部署对象的镜像tag是否一致,如果镜像tag前后不发生变化,且部署任务配置无变化,则无法更新部署对象,相当于"kubectl apply"的效果。若选择手动执行部署任务,用户应重新选定新的镜像tag,或修改任务配置,以更新部署对象。若选择流水线触发部署任务,流水线的制品上传步骤中,镜像tag应该选择每次执行流水线时都会变化的tag,如自定义tag,或commitId。(强烈不建议用latest)2、查看部署对象界面的YAML内容的第一个message字段,若出现"is forbidden: exceeded quota"等字眼,说明命名空间资源不足导致pod无法更新,用户应该找到CCSE的管理者,对命名空间加资源。
12、启用代码评审流程的分支,普通开发人员push代码的正确命令是:( )
- git push origin[分支名]
- git push origin HEAD:refs/for/[分支名]
- git push
- git push origin
启用代码评审流程的分支,普通开发人员推送代码的正确命令是:
B. git push origin HEAD:refs/for/[分支名]
这是因为当分支启用了代码评审流程,普通开发人员没有权限直接将代码推送到正式分支,而是需要先推送到一个临时空间(refs/for/前缀的分支),等待代码评审通过后,代码才会被合入到正式分支。
13、以下哪个能力是底座目前不具备的?( )
- 消息中心
- 附件管理
- 流程管理
- 表单设计
14、统一技术底座源码是在以下哪个地方进行了开源? ( )
- GitHub
- Gitee
- 研发云开源社区
- 私有GitLab
15、统一技术底座需要以下哪个网络环境?( )
- 研发云网络环境
- 互联网网络环境
- 甘肃电信网络环境
- 天翼云网络环境
16、统一技术底座的文件预览功能需要依赖以下哪个服务?( )
- OpenOffice
- WPS
- LibreOffice
- 不依赖任何服务
17、统一技术底座消息发送功能目前不支持以下哪个类型的消息发送?( )
- 站内信
- 钉钉
- 短信
- 微信
18、以下哪个Maven的profile表示底座源码单体版?( )
- alone
- single
- standAlone
- local
19、技术底座单体版需要用户自行搭建以下哪些环境?( )
- Mysql + rabbitMq
- ES + Kakfa
- Mysql + Redis
- MinIO + Redis
20、获取技术底座maven依赖的时候私服的账号密码需要从哪儿获取?( )
- 科创中台
- 研发云平台-项目制品库
- 研发云平台-组件广场-二方库
- 公司nexus私服
21、以下哪个是底座接口资源权限校验的注解?( )
- @SaCheckLogin
- @SaCheckRole
- @SaCheckPermission
- @SaCheckSafe
C. @SaCheckPermission
底座接口资源权限校验通常使用@SaCheckPermission注解来实现。这个注解用于检查当前用户是否具有访问特定资源或执行特定操作的权限。在Spring Security或其他权限控制框架中,这种注解可以指定一个或多个权限标识符,只有当用户的角色或权限包含这些标识符时,才能访问被注解的方法或路径。
22、底座防重复提交的注解是哪个?( )
- @RepeatSubmit
- @RepeatValidate
- @FormRepeat
- @RepeatFilter
23、底座代码生成功能支持哪些代码生成?( )
- 后端代码
- 前端代码
- 前端+后端代码
- 前端+后端+数据库DDL
C. 前端+后端代码
底座代码生成功能通常支持生成前后端代码,这包括业务逻辑层、数据访问层、前端界面以及相关的接口定义。这种功能可以极大地提高开发效率,减少手动编写基础代码的工作量,使开发者能够更专注于业务逻辑和应用设计。不过,具体支持的范围可能依据不同的代码生成工具或平台而有所不同,有些高级的代码生成器甚至可以支持生成数据库DDL语句。但根据常见的代码生成功能,选项C是最符合描述的。如果底座工具特别强大,可能会支持D选项,即同时生成前端、后端及数据库DDL。
24、流程中心中创建流程图时,需要先创建哪种数据模型?( )
- 普通模型
- 流程模型
- 表单模型
- 无需创建
B. 流程模型
在流程中心创建流程图时,首先需要创建的是流程模型,它定义了业务流程中的步骤、角色、流转条件等,是绘制流程图的基础。
25、在下列描述中,正确的描述是( )。
- SQL是一种过程化语言。
- SQL采用集合操作方式。
- SQL不能嵌入到高级语言程序中。
- SQL是一种DBMS.
B. SQL采用集合操作方式。
SQL(Structured Query Language)是一种用于管理和处理数据库的标准语言,它主要采用集合操作方式,即一次可以处理多行数据,而不是像过程化语言那样一行行地处理。因此,选项B是正确的描述。
26、下列程序段执行后,t5的结果是:( )
int t1=5,t2=6,t3=7,t4,t5;
t4=t1<t2?t1:t2;
t5=t4<t3?t4:t3;
- 7 B. 5 C. 6 D.0
B. 5
解释:这个程序段使用了三元运算符(也称为条件运算符),其语法为:条件 ? 结果1 : 结果2。如果条件为真(非零),则计算结果1,否则计算结果2。
首先,t4=t1<t2?t1:t2; 这行代码中,t1<t2 的条件为真(因为5<6),所以 t4 被赋值为 t1 的值,即5。
接下来,t5=t4<t3?t4:t3; 这行代码中,t4<t3 的条件也为真(因为5<7),所以 t5 被赋值为 t4 的值,即5。
因此,最终 t5 的结果是5。
27、getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果:( )
public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (java.io.FileNotFoundExceptionex) {
System.out.print("FileNotFoundException!");
} catch (java.io.IOExceptionex) {
System.out.print("IOException!");
} catch (java.lang.Exceptionex) {
System.out.print("Exception!");
}
}
- IOException!
- IOException!Exception!
- FileNotFoundException!IOException!
- FileNotFoundException!IOException!Exception!
FileNotFoundException 是 IOException 的一个子类。在 try-catch 语句中,捕获异常的顺序是很重要的。如果一个 catch 块捕获了更具体的异常类型(子类),那么它将优先于捕获更一般的异常类型(父类)的 catch 块。
在你的代码中:
java
复制代码
public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (java.io.FileNotFoundException ex) {
System.out.print(“FileNotFoundException!”);
} catch (java.io.IOException ex) {
System.out.print(“IOException!”);
} catch (java.lang.Exception ex) {
System.out.print(“Exception!”);
}
}
如果在 try 块中抛出了 FileNotFoundException 异常,由于 FileNotFoundException 是 IOException 的子类,它会被第一个 catch 块捕获,并打印 "FileNotFoundException!"。
但是,如果在 try 块中抛出的是一个直接的 IOException(不是 FileNotFoundException),它不会被第一个 catch 块捕获,而会被第二个 catch 块捕获并打印 "IOException!"。
所以,如果抛出的异常是 IOException,程序将输出 "IOException!"。如果抛出的是 FileNotFoundException,那么输出将是 "FileNotFoundException!"。因此,选择 A 是因为题目假设抛出的异常是 IOException,而不是 FileNotFoundException。
28、KV结构的集合,在处理null值的存储上有细微的区别,下列哪些说法是正确的:( )
- TreeMap的key不可以为null。
- TreeMap的key可以为null。
- ConcurrentHashMap的key可以为null。
- ConcurrentHashMap的value可以为null。
正确的说法是:
A. TreeMap的key不可以为null。
解释:
1. **TreeMap的key不可以为null**:`TreeMap` 是基于红黑树实现的。当向 `TreeMap` 中插入元素时,需要对键值进行比较,而 `null` 值在比较时会抛出 `NullPointerException`,因此 `TreeMap` 的 `key` 不能为 `null`。
2. **TreeMap的key可以为null**:这是错误的,`TreeMap` 的 `key` 不能为 `null`。
3. **ConcurrentHashMap的key可以为null**:这是错误的,`ConcurrentHashMap` 不允许 `key` 为 `null`。
4. **ConcurrentHashMap的value可以为null**:这是错误的,`ConcurrentHashMap` 也不允许 `value` 为 `null`。这是为了避免在并发操作中出现 `NullPointerException` 的问题。
因此,正确的答案是 **A**。
29、关于集合处理,下列说法不符合《Java开发规范》的是:( )
- 不要在foreach循环里进行元素的remove/add操作。
- 集合初始化时,指定集合初始值大小。
- 利用Set元素唯一的特性,可以快速对一个集合进行去重操作。
- 直接使用toArray无参方法。
答案是 D. 直接使用toArray无参方法。
解析:在Java中,`Collection`接口有一个`toArray()`方法,它会将集合中的元素转换为数组。但是,无参数的`toArray()`方法返回的是一个`Object[]`数组,这可能会导致类型转换错误或者需要进行额外的类型转换操作。为了代码的健壮性和类型安全,《Java开发规范》建议在使用`toArray()`方法时,传入一个具体类型的数组作为参数,这样可以直接得到相应类型的数组,避免后续的类型转换。例如:
```java
List<String> list = new ArrayList<>();
// ... 添加元素到list ...
String[] array = list.toArray(new String[0]);
```
在这个例子中,`toArray(new String[0])`会返回一个`String[]`类型的数组,可以直接使用,不需要额外的类型转换。因此,直接使用无参的`toArray()`方法不符合《Java开发规范》的建议。
30、避免在索引中使用任何可以( )的列。
- 为空 B. 为0 C. 数字 D. 字母
答案是:A. 为空
解释:
在索引中避免使用可能为空的列是因为空值可能会影响索引的有效性和性能。当列包含空值时,这些值可能不会被包括在索引中,导致查询性能下降。因此,最好避免在索引中使用可能为空的列。
31、考虑以下Java代码段:
```
public class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound();
myCat.sound();
}
}
```
执行main方法后,控制台的输出结果是什么( )?
- Animal makes a sound
- Dog barks
- Cat meows
- Dog barks Cat meows
答案是:D. Dog barks Cat meows
解释:
在这段代码中,`myDog` 被声明为 `Animal` 类型,但实例化为 `Dog`,而 `myCat` 被声明为 `Animal` 类型,但实例化为 `Cat`。由于 `Java` 的多态性,当调用 `sound()` 方法时,实际调用的是对象实例对应的重写方法,而不是 `Animal` 类的 `sound()` 方法。
因此,执行 `myDog.sound();` 时,调用的是 `Dog` 类中的 `sound()` 方法,输出 "Dog barks"。执行 `myCat.sound();` 时,调用的是 `Cat` 类中的 `sound()` 方法,输出 "Cat meows"。
最终控制台的输出结果是:**Dog barks Cat meows**。
32、在关系型数据库中,哪个操作可以用来消除重复行?( )
- SELECT DISTINCT
- SELECT ALL
- DELETE DUPLICATE
- INSERT UNIQUE
33、关于数据库索引,以下哪项描述是正确的?( )
- 索引会加快数据的插入速度。
- 索引会占用额外的磁盘空间。
- 索引可以提高所有查询的速度。
- 索引对数据库的性能没有任何影响。
34、下列哪项不是计算机网络的主要功能?( )
- 数据通信
- 资源共享
- 分布式处理
- 数据存储
答案是:D. 数据存储
解释:
计算机网络的主要功能包括:
- **数据通信**:网络的基本功能是实现数据的传输和通信。
- **资源共享**:网络允许多个用户共享硬件和软件资源。
- **分布式处理**:网络支持将处理任务分配给不同的计算机以提高效率和可靠性。
而 **数据存储** 不是计算机网络的主要功能。数据存储通常是由存储设备或数据库系统来实现的,而不是网络的主要职责。网络可以用于访问和传输存储的数据,但存储本身不是网络的功能。
35、下列关于Java中的注解(Annotation)的说法中,哪一个是正确的?( )
- 注解只能用于类定义上。
- 注解在运行时可以通过反射API来获取。
- 注解本质上是一个接口。
- 注解不能带有成员变量
答案是:B. 注解在运行时可以通过反射API来获取。
解释:
1. **注解只能用于类定义上**:错误,注解可以用于类、方法、字段、参数等多个位置。
2. **注解在运行时可以通过反射API来获取**:正确,通过 Java 的反射 API 可以在运行时获取注解信息,前提是该注解具有 `@Retention(RetentionPolicy.RUNTIME)` 元注解。
3. **注解本质上是一个接口**:错误,注解在 Java 中是一种特殊的接口,但它不仅仅是一个接口。
4. **注解不能带有成员变量**:错误,注解可以包含成员变量,这些成员变量通常是方法(也称为注解元素),可以有默认值。
因此,正确的答案是 **B**。。
36、jQuery的默认别名是?( )
- ? 符号
- $ 符号
- % 符号
- # 符号
答案是:B. $ 符号
解释:
在 jQuery 中,`$` 符号是 jQuery 的默认别名,用于简化对 jQuery 函数和方法的调用。
37、当jQuery的默认别名和其他库冲突时,以下哪个方法可以重新定义新的别名?( )
- Infliction
- noconflict
- NoConflict
- Noconflict
答案是:C. NoConflict
解释:
在 jQuery 中,如果 `$` 符号与其他库发生冲突,可以使用 `jQuery.noConflict()` 方法来释放 `$` 的控制权,并重新定义一个新的别名。
38、把所有p元素的背景色设置为红色的正确jQuery代码是?( )
- $("p").manipulate("background-color", "red");
- $("p").layout("background-color", "red");
- $("p").style("background-color", "red");
- $("p").css("background-color", "red");
答案是:D. `$("p").css("background-color", "red");`
解释:
在 jQuery 中,`css()` 方法用于设置或获取元素的 CSS 属性。要将所有 `p` 元素的背景色设置为红色,可以使用 `$("p").css("background-color", "red");`。
39、通过jQuery代码$("div.intro")能够选取的元素是?( )
- class="intro"的首个div元素
- class="intro"的所有div元素
- id="intro"的首个div元素
- id="intro"的所有div元素
答案是:B. `class="intro"` 的所有 `div` 元素
解释:
`$("div.intro")` 是 jQuery 的选择器语法,它用于选取所有具有 `class="intro"` 的 `div` 元素。
40、下面哪个jQuery方法用于隐藏被选元素?( )
- hidden()
- hide()
- display(none)
- visible(false)
答案是:B. hide()
解释:
在 jQuery 中,hide() 方法用于隐藏被选中的元素。
二、多选题(每题2分,共5题,总分10分)
41、以下属于研发云2.0提供的能力包括:( )。
- 代码托管
- 原子能力订购
- 流水线编译构建
- 持续部署
研发云2.0确实提供了全面的功能来支持开发和运维过程的自动化与优化。具体来说,它包括以下关键功能:
1. **代码托管**:研发云提供版本中心,允许团队存储和管理源代码,支持版本控制,便于代码的协作和历史追踪。
2. **原子能力订购**:通过能力市场,开发者可以订阅和使用预定义的服务或功能模块,加速应用开发,减少重复工作。
3. **流水线编译构建**:集成中心支持自动化的构建流程,包括代码检查、编译、打包等,确保代码质量并准备就绪以供部署。
4. **持续部署**:部署中心提供一键部署能力,能够将应用自动部署到测试或生产环境,简化发布流程,加快反馈循环。
这些功能共同构成了研发云2.0的DevOps工具链,旨在提升研发效率,保证软件质量,促进敏捷开发实践。
42、在研发云部署任务中,需要为容器设置环境变量,目前研发云平台可以支持哪几种类型:( )。
- KeyValue
- fieldRef
- configmapRef
- secretRef
使用部署时容器的环境变量(KeyValue、fieldRef、configmapRef)如何使用?
43、以下哪些版本属于底座前端开发基本环境要求?( )。
- NodeJs@>=18.15.0
- Npm@^8.19.2
- NodeJs@>=16.14.0
- Npm@^7.1.0
因此,综合考虑,A 和 B 更符合底座前端开发的基本环境要求。但是,具体选择哪个版本还需要根据项目的实际需求和兼容性要求来决定。在实际应用中,选择最新稳定版本通常是一个好的策略,只要它与项目中的其他依赖兼容。
44、想了解项目团队的本月的工作负荷情况,可以查看以下哪些图标:( )
- 需求存量趋势图表
- 需求新增趋势
- 新增、完成需求对比分析
- 需求累积流图
- 工作项总数类型分布
,A、C、D 可能是最直接相关的选项,但 E 也可以作为辅助信息来全面了解团队的工作负荷情况。
45、研发云流水线配置中,流水线如何配置从制品库下载文件到流水线的工作目录:( )
- 使用文件下载步骤
- 使用执行指令步骤,通过wgetacurl下载
- 在制品库界面点击下载按钮
- 使用制品上传步骤
在研发云流水线配置中,从制品库下载文件到流水线的工作目录应使用:
A. 使用文件下载步骤
这是专门设计用于从制品库下载文件到流水线运行时的工作区的步骤,它能够确保文件正确地被放置在需要的位置,以便后续的构建、打包等步骤使用。其他选项如使用执行指令步骤、在制品库界面点击下载按钮或使用制品上传步骤并不适用于此场景,因为它们要么不是流水线内的操作,要么功能不匹配(如制品上传步骤是用于上传而非下载文件)。因此,正确答案是 A. 使用文件下载步骤。
三、判断题(每题2分,共5题,总分10分)
错误。jQuery方法css不仅可以设置一个CSS属性,还可以同时设置多个CSS属性。当传入一个对象作为参数时,这个对象的键值对将被解释为CSS属性名和对应的值。
47、错误。CSS层级选择器的层级数量确实会影响浏览器的渲染性能。更深层次的选择器会导致浏览器在解析和应用样式时消耗更多资源,尤其是在大型DOM树中。
48、正确。在Java中,垃圾收集是自动进行的,它会自动回收不再使用的对象占用的内存,从而避免了手动管理内存可能导致的内存泄漏问题。
49、正确。使用技术底座开发时,Maven的settings.xml文件确实需要配置特定的信息,包括研发云组件广场的二方库制品用户信息以及ctgansu-oshare-maven-mc共享库信息,以确保项目可以正确访问和使用所需的依赖库。
50、错误。在刷新统一技术底座源码的Maven依赖时,通常需要根据项目环境选择合适的Maven Profiles,例如alone或cloud,以确保加载正确的依赖集,满足不同环境下的需求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-08-15 ruijie 包 模块 命令树 命令