一、单选题1.如下关于集合类的描述错误的是BA.含有集合意义的属性命名,尽量包含其复数的意义B.集合中的数据不需要释放,垃圾回收器会自动回收C.集合必须指定模板类型D.使用集合类时要设置初始化容量2.关于线程以下说法错误的有BA.新起一个线程,都要使用Thread.setName(“…”)设置线程名B.在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,使用StringBufferC.对多线程访问的变量、方法,必须加锁保护,避免出现多线程并发访问引起的问题D.线程使用时,要在代码框架中使用线程池,避免创建不可复用的线程;禁止在循环中创建新线程,否则会引起JVM资源耗尽3.下面哪个是推荐使用的对称密码算法BA.DESB.AESC.SHAD.RSA4.以下说法正确的有CA.程序中的一些状态多直接用数字表示,如函数执行成功return1B.对于表示函数执行错误,多用约定的错误码来标识C.用有意义的静态变量或者枚举来代替数字型的程序状态,如函数执行成功returnSUCCESSD.程序中的魔鬼数字并不可怕,需要所有开发人员努力理解这些数字的含义5.下列错误使用异常的做法是DA.在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常B.一个方法不应抛出太多类型的异常。throws/exception子句标明的异常最好不要超过三个C.异常捕获尽量不要直接catch(Exceptionex),应该把异常细分处理D.程序内抛出的异常本身就可说明异常的类型、抛出条件,可不填写详细的描述信息。捕获异常后用exception.toString()取到详细信息后保存6.关于命名规范,以下说法错误的有DA.属性名使用意义完整的英文描述,第一个单词的字母使用小写,剩余单词首字母大写其余字母小写的大小写混合法。属性名不能与方法名相同B.方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法C.方法中,存取属性的方法采用setter和getter方法,动作方法采用动词和动宾结构D.常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用static修饰[y1]7.下列哪个场景可以使用java.util.Random类产生的随机数CA.挑战算法中的随机数生成B.验证码的随机数生成C.随机选取路由D.Web应用会话标识符8.一段使用ZipInputStream对压缩文件进行解压的代码,在[1]处填入适合的关键字是ApublicRandomAccessFileopenFile(java.io.Filef){[1]java.io.Filecopy=newjava.io.File(f.getPath());askUserPermission(copy.getPath());//...return(RandomAccessFile)AccessController.doPrivileged(newPrivilegedAction(){publicObjectrun(){returnnewRandomAccessFile(copy,copy.getPath());}});}A.finalB.staticC.volatileD.private9.安全编程规范中,下面说法错误的是DA.对外部输入进行校验B.禁止不受信任的代码直接终止JVMC.创建文件时指定合理的访问权限D.记录日志时可以抛异常10.若程序中需要获取操作系统登录用户名,应采取下列哪种方法来获取CA.提示用户输入B.由环境变量获取:System.getenv(USER)C.由JVM属性获取:System.getProperty(user.name)D.启动程序的时候由程序参数传入11.以下说法正确的是AA.尽量使用Java5.0新循环写法B.判断一个变量是否等于null、或者一个常量,应把变量放在操作符的左边C.方法参数不能超过7个D.用“==”比较两个字符串内容相等12.在下列哪个场景中,不需要加密和数字签名机制保证数据安全DA.序列化传输敏感数据B.无SSL传输通道或者代价太高C.敏感数据需要持久化长久保存D.同一信任域内组件间传递13.下列JDK中的API调用中若使用不当易遭致OS命令注入的是BA.java.lang.System.load()B.java.lang.Runtime.exec()C.java.lang.Thread.start()D.java.lang.Process.waitFor()14.如下描述不正确的是DA.除了构建器外,不要使用和类名相同的方法名B.使用equals()比较两个类的值是否相同C.不要使用嵌套赋值,即在一个表达式中使用多个=D.重载equals()方法时,不必要重载hashCode()方法15.下列不符合编码规范的是CA.数据库、IO操作等需要使用结束close()的对象必须在try-catch-finally的finally中close()B.数组声明的时候使用int[]index,而不要使用intindex[]C.所有的类必须重载toString()方法,返回该类有意义的内容D.自己抛出的异常必须要填写详细的描述信息16.对于下面的代码片段,假设PasswordManager的实例可以被非信任代码所访问,且changePassword()方法调用属于敏感操作,则下列说法中不正确是的CpublicclassPasswordManager{publicfinalObjectlock=newObject();publicvoidchangePassword()throwsFileNotFoundException{synchronized(lock){//...}}}A.changePassword()方法中应该包含安全管理器检查,以确认调用代码是否具有该操作权限B.应该将lock成员变量的可见性声明为privateC.可以省去changePassword()方法中的同步块,直接将changePassword()方法声明为synchronized修饰的同步方法D.changePassword()方法不应该抛出FileNotFoundException异常17.推荐的防御SQL注入的最佳方式是CA.限制外部输入的长度B.使用存储过程C.使用预编译语句--java.sql.PreparedStatementD.对外部输入进行转义18.JAAS授权类中,不包含以下哪一类DA.PolicyB.AuthPermissionC.PrivateCredentialPermissionD.LoginContext19.下面说法或者语句不符合公司编程规范的排版要求的是DA.逗号、分号只在后面加空格;比较操作符,赋值操作符=、+=,算术操作符+、%,逻辑操作符&&、&,位域操作符、^等双目操作符的前后加空格;!、~、++、--、&(地址运算符)等单目操作符前后不加空格B.如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在Java语言中括号已是最清晰的标志了C.较长的语句、表达式或参数(80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读D.if,for,do,while等语句的执行语句如果只有一行的话,不需要要加括号{}20.对于注释的描述错误的是CA.公有和保护方法注释内容:列出方法的一句话功能简述、功能详细描述、输入参数、输出参数、返回值、异常等B.对重载父类的方法必须进行@Override声明C.对关键变量的定义必须编写注释,分支语句(条件分支、循环语句等),可以根据实际情况,可以增加注释,也可以不加,根据注释量确定D.对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他方法所抛出的异常,选择主要的在注释中说明。对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明二、多选题21.如下类名符合公司规范的有CDA.FtpDownload_UtilB.DEBUGLOGC.OrderResponseD.UserManager22.如下哪些地方应该加上空行ABDA.import语句与类定义之间B.注释与其上面的无关的代码之间C.注释和被注释的代码之间D.变量说明之后23.关于局部变量说法,符合编程规范的说法是ABCA.不要定义不会被用到的局部变量,类私有属性,类私有方法和方法参数B.几乎每一个局部变量的声明都应该包含一个初始化表达式C.变量定义的“就近原则”D.属性名可以和公有方法参数相同,也可以和局部变量相同24.下列说法描述正确的是ABCDA.public方法参数的合法性检查应由方法本身负责,每一个public方法必须保证自己的健壮性B.调用方法获取返回结果后必须进行有效性校验,以确保后续代码在运行过程中不会抛出异常或产生逻辑错误C.访问数组、List等容器内的元素时,必须首先检查下标是否越界,杜绝下标越界异常的发生D.对于if?elseif?(后续可能有多个elseif…)这种类型的条件判断,最后必须包含一个else分支,避免出现分支遗漏造成错误;每个switch-case语句都必须保证有default,避免出现分支遗漏,造成错误25.下面关于存取控制符号的描述,符合编程规范的有ABCA.只是该类内部调用的函数使用private属性B.继承类可以使用的使用protected属性C.对外公开的函数使用public属性D.类的成员变量的尽量采用protected修饰,其他类可以通过类的成员方法来访问和修改变量26.下列关于类和接口的注释,正确的说法有ABCA.放在class或者interface关键字之前B.放在import关键字之后C.注释主要是一句话功能简述与功能详细描述D.类注释使用“/****/”注释方式27.以下说法正确的有ABCDA.一个系统或者模块应该统一规划异常类型和返回码的含义B.异常的处理效率比条件分支低C.异常的跳转流程难以预测D.系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录日志28.关于异常,以下说法正确的有ACA.运行时异常使用RuntimeException的子类来表示,不用在可能抛出异常的方法声明上加throws子句B.运行时异常使用RuntimeException的子类来表示,必须在可能抛出异常的方法声明上加throws子句C.非运行期异常是从Exception继承而来的,必须在方法声明上加throws子句D.非运行期异常是从Exception继承而来的,不需要在方法声明上加throws子句29.下述排版代码中,符合编码规范的是CDA.if(ij)doStart();B.Objecto=newObject();Objectb=null;C.类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}D.typeCounter*=2;30.循环嵌套的时候,下面哪些情况需要尽量避免ABCDA.实例化对象B.try/catchC.开启IOD.连接数据库31.当与非信任代码(非产品包)……..ACD32.以下哪些方式是被禁止的ABC33.当外部输入用于以下。。。。合法性验证。。。。ABCD34.以下哪些场景。。。安全检查ACD35.下列异常中,哪些易引起信息泄露ABCD36.下列关于编码相关,错误的是。。。ACD37.目录遍历攻击。。。。AC38.对于文件IO操作。。。。。ABCD39.安全规范中,如下。。。正确的有ACD40.为防止敏感数据传输。。。。ABC三、判断题41.将字符串转换为数字时必须处理NumberFormatException异常√42.一个文件不要定义两个类(并非指内部类)√43.interface中定义的常量不要写public、