waylau / java-trusted-coding-exam Goto Github PK
View Code? Open in Web Editor NEWJava Trusted Coding Exam. Java安可认证阶段考试——可信编码实现
Home Page: https://waylau.com/books/
Java Trusted Coding Exam. Java安可认证阶段考试——可信编码实现
Home Page: https://waylau.com/books/
编程规范:需对第三方抛出的异常进行封装的的理由是(3分)
A. 直接利用第三方异常,减少异常类的编写
B. 避免与第三方API产生太过紧密的耦合
C. 利用第三方抛出的异常,可以与本身的抽象层次相对应
D. 避免因第三方修改了异常之后而导致自身代码的变更
你的回答B、D
编码(encoder)可以防御哪些攻击?(2分)
A. 信息泄露
B. CSRF
C. XSS、SQL注入
D. 文件上传
你的回答C
以下代码的输出结果是? public class B { public static B t1 = new B(); public static B t2 = new B(); { System.out.println("构造块"); } static { System.out.println("静态块"); } public static void main(String[] args) { B t = new B(); } }(2分)
A. 静态块 构造块 构造块 构造块
B. 构造块 静态块 构造块 构造块
C. 构造块 构造块 静态块 构造块
D. 构造块 构造块 构造块 静态块
你的回答C
不要把方法的入参当做工作变量/临时变量。(2分)
A. 正确
B. 错误
你的回答A
编程规范:可以通过使用JAVA的线程优先级来实现业务的优先级调度。(2分)
A. 正确
B. 错误
你的回答B
关于受检异常(checked exception)、运行时异常(runtime exception)、错误(error),以下说法正确的是( )(3分)
A. 受检异常可以强迫调用者在一个catch子句中处理该异常,或者继续向外传播
B. 错误(error)被JVM保留用于指示资源不足、约束失败或者其他程序无法继续执行的情况
C. 运行时异常是指难以恢复或者不可恢复的程序错误
D. 除非必要时,最好不要实现新的Error子类
E. 如果期望调用者能够恢复,则应该使用受检异常
你的回答A、B、C、D、E
关于序列化,以下说法正确的是( )(3分)
A. 序列化没有对外公开对象的物理实现
B. 序列化不会使一个类对其最初的内部表示产生依赖
C. 编写正确的反序列化代码有很大的挑战
D. 序列化增大了安全风险
E. 序列化增加了测试的难度
你的回答C、D、E
以下JAVA程序代码的输出是
public static void main(String args[]) {
System.out.println(14^3);
}
A. 2744
B. 13
C. 17
D. 11
回答B
执行完以下代码 int [ ] x = new int[10] ;后,以下哪项说明是正确的( )
A. x[9]为0
B. x[9]未定义
C. x[10]为0
D. x[0]为空
你的回答A
编程规范:当直接将外部输入作为参数传递给java.lang.Runtime.exec()方法的时候,易引入下列哪些攻击类型的漏洞(3分)
A. SQL注入
B. XML注入
C. 命令注入
D. 参数注入攻击
你的回答C、D
在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()(2分)
A. this.A(x)
B. this(x)
C. super(x)
D. A(x)
你的回答C 是错误的。本题答案选B
A选项是调用普通方法的格式
C选项为调用父类构造方法的格式
D选项为调用静态方法的格式
下列说法哪个正确( )(2分)
A. 不需要定义类,就能创建对象
B. 对象中必须有数据域和方法
C. 数据域可以是基本类型变量,也可以是一个对象
D. 数据域必须是基本类型变量
你的回答C
编程规范:下列说法正确的是(3分)
A. 通常应该使用System.arraycopy()进行数组复制
B. 使用集合的toArray()方法将集合转为数组
C. 将对象存入HashSet,或作为key存储HashMap(或HashTable)后,必须确保该对象的hashcode值不变,避免因为hashcode值变化导致不能从集合内删除该对象。
D. 执行IO操作时,应该再finally里关闭IO资源。
你的回答A、B、C、D
下面代码片段编译失败的是:
3. public static void main(String[] args) {
4. int iVar = 100;
5. float fVar = 100.100f;
6. double dVar = 123;
7. iVar = fVar;
8. fVar = iVar;
9. dVar = fVar;
10. fVar = dVar;
11. dVar = iVar;
12. iVar = dVar;
13.}
A. Line 7
B. Line 8
C. Line 9
D. Line 10
E. Line 11
F. Line 12
你的回答A、D、F
什么时候需要增加空格:()(3分)
A. 变量与自增运算符(++)之间
B. if关键字后面
C. 逗号、分号与后续内容之间
D. 注释符与注释内容之间
你的回答B、C、D
10个相同的糖果,分给三个人,每个人至少要得一个。有()种不同分法(2分)
A. 33
B. 34
C. 35
D. 36
你的回答D
关于防御XSS进行输出编码的描述,正确的是 ( )(3分)
A. 不同形态的参数会被不同的解析器解析、解码,因此要采用不同的编码方法,有些情况还需要经过多次编码
B. 对于输出编码,建议使用OWASP的ESAPI或者公司能力中心封装的安全组件
C. 前后端要采用相同的编码方式,如果编码不一致也可能造成XSS攻击
D. 编码的方式需要程序员理解浏览器解析的流程,最后编码的顺序与解析的顺序相反
你的回答A、B、C、D
IPV6地址包含多少位()(2分)
A. 16
B. 32
C. 64
D. 128
你的回答D
下面有关maven和ant的描述,描述错误的是?(2分)
A. Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
B. Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
C. maven和ant都有“生命周期"的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
D. Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml
你的回答D 是错误的。应该是C
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。
Ant
Ant构建文件默认命名为build.xml
特点:
没有一个约定的目录结构
必须明确让ant做什么,什么时候做,然后编译,打包
没有生命周期,必须定义目标及其实现的任务序列
没有集成依赖管理
Maven(软件项目管理和理解工具)
Maven默认构建文件为pom.xml
特点:
拥有约定,知道你的代码在哪里,放到哪里去
拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
拥有依赖管理,仓库管理
才下哪些操作场景需要进行安全检查?( )(3分)
A. 修改文件权限
B. 修改登录密码
C. 删除日志文件
D. 记录日志数据
你的回答A、B、C
关于异常,以下说法错误的是 ( )(3分)
A. 不用处理的异常可以使用空的catch块进行忽略
B. 方法抛出的异常,应该与本身的抽象层次相对应
C. Finally块中可以使用return,continue或break进行流程控制
D. 方法抛出的异常数量可以不受限制
你的回答A、C、D
关于下面的程序,说法正确的是:
1. public class StaticStuff
2 {
3. static int x = 10;
4.
5. static { x += 5; }
6.
7. public static void main(String args[])
8. {
9. System.out.println("x = " + StaticStuff .x);
10. }
11. static
12. {x /= 3; }
13.}
A. 第5行和12行不能编译,因为该方法没有方法名和返回值。
B. 第12 行不能编译,因为只能有一个static初始化块。
C. 代码编译并执行,输出结果x = 10.
D. 代码编译并执行,输出结果 x = 5.
E. 代码编译并执行,输出结果 x = 15.
你的回答D
以下说法正确的是 ( )(3分)
A. 要在多个线程间安全的同步共享数据就必须使用锁,新的并发工具包中的线程安全对象或者其它具有锁效应的线程安全数据结构
B. 建议使用线程组来管理线程资源
C. 缺省的线程名Thread-n无法区分出是哪个线程,给问题定位带来不便
D. Thread.yield()对线程调度器仅仅是个提示,不保证确定的效果,因此代码也不能依赖Thread.yield()方法
你的回答A、C、D \A、B、C、D \A、B、D 是错的。暂时不知道答案
下列说法正确的是()(2分)
A. 在类方法中可用this来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
你的回答B
编程规范:在不同的概念之间,增加空行。比如包名与import之间,import与类名之间,方法与方法,相对独立的程序块之间、变量声明后续增加空行,来提升可读性。(2分)
A. 正确
B. 错误
你的回答A
以下程序运行的结果为 ( ) public class Example extends Thread{ @OverRide public void run(){ try { Thread.sleep(1000); } catch (InterruptedException e){ e.printStackTrace(); } System. out .print( "run" ); } public static void main(String[] args){ Example example= new Example(); example.run(); System. out .print( "main" ); } }(2分)
A. run main
B. main run
C. main
D. run
E. 不能确定
你的回答B 是错误的。估计他是想考线程执行的不确定性吧,估计是E
如果代码中需要用到外部输入来拼接特定格式的XML文档,为了防止XML注入,可以使用对应的DTD或者Schema文件对最终生成的XML校验。(2分)
A. 正确
B. 错误
你的回答B
可以不对第三方抛出的异常进行封装,这样可以直接利用第三方的异常来处理。(2分)
A. 正确
B. 错误
你的回答B
小数值1.5625的二进制表示是?(2分)
A. 101.1001
B. 0.001
C. 101.111
D. 1.1001
你的回答D
关于Java语言描述正确的是? ( )(2分)
A. java和C++都保留了指针
B. java和C++都有三个特征:封装、继承和多态
C. java的垃圾回收机制是指程序结束时系统自动回收内存
D. 以上说法都不正确
你的回答B
下列哪些信息不可以打印到日志中 ( )(3分)
A. 加密秘钥
B. 口令密文
C. 口令明文
D. 身份ID
你的回答A、B、C、D
常见的XML实体解析导致的安全风险有哪几种?( )(3分)
A. 内部实体扩展
B. XXE
C. xPath注入
D. XML注入
你的回答A、B
SQL注入过程的工作方式是提前终止文本字符串,然后追加一个新命令。(2分)
A. 正确
B. 错误
你的回答A
关于异常,下面说法正确的是( )(3分)
A. 在程序中,允许空的catch块来忽略异常
B. 一个空catch块至少应该添加注释,解释为什么可以忽略这个异常
C. 那些不应该频繁发生的异常,还应该将异常信息记录到日志中
D. 可以用exception机制来做流程控制
你的回答B、C
如果一个list初始化为{5,3,1},执行以下代码后,其结果为()? nums.add(6); nums.add(0,4); nums.remove(1);(2分)
A. [5, 3, 1, 6]
B. [4, 3, 1, 6]
C. [4, 3, 6]
D. [5, 3, 6]
你的回答B
编程规范:关于数据库操作说法正确的是(3分)
A. 使用专业的扫描工具来确保数据库安全
B. 避免出现一些详细的错误信息
C. 使用存储过程来执行所有的查询
D. 每个应用使用单独的权限进行数据库连接
你的回答A、B、C、D
下列选项中,对资源使用效率较高的是:( )(3分)
A. String s = new String(“string”);
B. Integer i = new Integer(90);
C. Integer i = Integer.valueOf(90);
D. Strng s = “string”;
你的回答C、D
关于防御XSS进行输出编码的描述,正确的是 ( )(3分)
A. 不同形态的参数会被不同的解析器解析、解码,因此要采用不同的编码方法,有些情况还需要经过多次编码
B. 对于输出编码,建议使用OWASP的ESAPI或者公司能力中心封装的安全组件
C. 前后端要采用相同的编码方式,如果编码不一致也可能造成XSS攻击
D. 编码的方式需要程序员理解浏览器解析的流程,最后编码的顺序与解析的顺序相反
你的回答A、B、C、D
在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?(2分)
A. 正好1000毫秒
B. 1000毫秒不到
C. >=1000毫秒
D. 不一定
你的回答D 是错误的,应该是C。
其实D也没有错,肯定是不确定的时间。但一定是大于等于1000
编程规范:下面的说法,哪个描述是正确的(2分)
A. 测试代码只是调测时使用,所以没必要象正式代码一样给出注释
B. 在软件系统中设置与取消有关测试字段,软件功能行为上可以不一致
C. 调测开关统一使用-unit-debug,一般不允许再定义其它的调测开关
D. 好的测试用例应尽可能模拟出程序所遇到的边界值,各种复杂环境以及一些极端情况等
你的回答D
下列哪个场景可能导致信息泄露?( )(3分)
A. 用户输入
B. 进程间的通信数据
C. 用户态输入
D. 外部调用的参数
你的回答A、B、C、D
编程规范:对程序进行编译时,必须打开编译器的所有告警开关. (2分)
A. 正确
B. 错误
你的回答A
下列关于输入校验说法错误的是( )(3分)
A. 软件最为普遍的缺陷就是对来自客户端或者外部环境的数据没有进行正确的合法性校验。这种缺陷可以导致几乎所有的程序弱点。
B. 输入校验中如果没有特殊要求,应当首先考虑采用“白名单”校验形式。
C. 可以直接使用任意用户输入来构造格式化字符串,不会带来安全风险。
D. 当程序需要用户上传文件时,严格校验用户上传的文件后缀名可以有效防止可执行文件上传漏洞。
你的回答C、D
多行注释中可以嵌套//单行注释,也能嵌套/**/多行注释(2分)
A. 正确
B. 错误
你的回答B
JAVA平台沙箱安全模型包含以下哪几个安全组件( )(3分)
A. 类加载器
B. 类文件校验器
C. 安全管理器
D. 语法分析器
你的回答A、B、C
以下哪个区域不属于新生代?(2分)
A. eden区
B. from区
C. 元数据区
D. to区
你的回答C
如下代码:
class Base {
Base() {
System.out.print("Base");
}
}
public class Alpha extends Base {
public static void main( String[] args ) {
new Alpha();
new Base();
}
}
结果是什么? (2分)
A. Base
B. BaseBase
C. 编译失败.
D. 代码运行但没有输出.
E. 运行时抛出异常
你的回答B
新建一个流对象,下面哪个选项的代码是错误的?( )(2分)
A. new BufferedWriter(new FileWriter("a.txt"));
B. new BufferedReader(new FileInputStream("a.dat"));
C. new GZIPOutputStream(new FileOutputStream("a.zip"));
D. new ObjectInputStream(new FileInputStream("a.dat"));
你的回答B
分析以下代码,说法正确的是()
public static void main(String[] args) {
System.out.println(val());
}
public static int val() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
}
A. 运行时报错
B. 程序正常运行,输出值为5
C. 程序正常运行,输出值为10
D. 程序正常运行,输出值为15
你的回答D
编程规范:应该设计高扇出、合理扇入的函数。(2分)
A. 正确
B. 错误
你的回答B
应该设计高扇入、合理扇出的函数。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.