牛客错题——计算机专业 Java C语言(持续更新)
1、关于Java中的ClassLoader下面的哪些描述是错误的:( )
A. 默认情况下,Java应用启动过程涉及三个ClassLoader: Boostrap, Extension, System
B. 一般的情况不同ClassLoader装载的类是不相同的,但接口类例外,对于同一接口所有类装载器装载所获得的类是相同的
C. 类装载器需要保证类装载过程的线程安全
D. ClassLoader的loadClass在装载一个类时,如果该类不存在它将返回null
E. ClassLoader的父子结构中,默认装载采用了父优先
F. 所有ClassLoader装载的类都来自CLASSPATH环境指定的路径
正确答案: B D F 你的答案: B E F
解析:
A.Java系统提供3种类加载器:启动类加载器(Bootstrap ClassLoader) 扩展类加载器(Extension ClassLoader) 应用程序类加载器(Application ClassLoader). A正确
B.《深入理解Java虚拟机》P228:对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类必定不相等。接口类是一种特殊类,因此对于同一接口不同的类装载器装载所获得的类是不相同的。B错误
C.类只需加载一次就行,因此要保证类加载过程线程安全,防止类加载多次。C正确
D. Java程序的类加载器采用双亲委派模型,实现双亲委派的代码集中在java.lang.ClassLoader的loadClass()方法中,此方法实现的大致逻辑是:先检查是否已经被加载,若没有加载则调用父类加载器的loadClass()方法,若父类加载器为空则默认使用启动类加载器作为父类加载器。如果父类加载失败,抛出ClassNotFoundException异常。D错误
E.双亲委派模型的工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载。E正确
F.应用程序类加载器(Application ClassLoader)负责加载用户类路径(ClassPath)上所指定的类库,不是所有的ClassLoader都加载此路径。F错误
2、下面哪些写法能在 java8 中编译执行()
A. dir.listFiles((File f)->f.getName().endsWith(“.Java”));
B. dir.listFiles((File f)=>f.getName().endsWith(“.Java”));
C. dir.listFiles((_.getName().endsWith(“.Java”)));
D. dir.listFiles( f->f.getName().endsWith(“.Java”));
正确答案: A D 你的答案: D (错误)
解析:
方法说明:
1 public File[] listFiles(FileFilter filter) { 2 String ss[] = list(); 3 if (ss == null) return null; 4 ArrayList<File> files = new ArrayList<>(); 5 for (String s : ss) { 6 File f = new File(s, this); 7 if ((filter == null) || filter.accept(f)) 8 files.add(f); 9 } 10 return files.toArray(new File[files.size()]); 11 }
listFiles(FileFilter fileFilter) 这个方法接收的是一个函数式接口类型的参数,所以可以采用Lambad表达式来替换匿名内部类的繁琐语法
A、D是两种Lambda的写法,一开始没看出来啊A选项,后面仔细一看A选项在Java8之后也是支持的
补充:
3、以下那些代码段能正确执行
A. public static void main(String args[]) {
byte a = 3;
byte b = 2;
b = a + b;
System.out.println(b);
}
B. public static void main(String args[]) {
byte a = 127;
byte b = 126;
b = a + b;
System.out.println(b);
}
C. public static void main(String args[]) {
byte a = 3;
byte b = 2;
a+=b;
System.out.println(b);
}
D. public static void main(String args[]) {
byte a = 127;
byte b = 127;
a+=b;
System.out.println(b);
}
正确答案:AD 你的答案:C
解析:

4、文件目录data当前权限为rwx --- ---,只需要增加用户组可读可执行权限,但不允许写操作,具体方法为:
A. chmod+050data
B. chmod+040data
C. chmod+005data
D. chmod+004data
正确答案: A 你的答案: C
解析:
5、变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000; 变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF。 则a-b的结果用10进制表示为多少?()
B. -(2^62+2^61+2^60+1)
C. 2^62+2^61+2^60+1
D. 2^59+(2^55+2^54+…+2^2+2^1+2^0)
正确答案:C 错选:B
解析:0Xf000000000000000补码为1111000000000000000000000000000000000000000000000000000000000000
1111000000000000000000000000000000000000000000000000000000000000+
1000000000000000000000000000000000000000000000000000000000000001=
10111000000000000000000000000000000000000000000000000000000000001(高位溢出舍去)
则结果为
0111000000000000000000000000000000000000000000000000000000000001=2^62+2^61+2^60+1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能