在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Java面试笔试题大汇总(最全+详细答案)

Java面试笔试题大汇总(最全+详细答案)

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.37M
  • 下载次数:4
  • 浏览次数:61
  • 发布时间:2020-06-20
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
搜集的 Java面试笔试题,设置最低积分,备份加供诸位道兄下载,没积分的私我
是 的内部类,其代码如下所小 简单的说,如果整型字面量的值在到之间,那么不会新的 对象,而是 直接引用常量池中的 对象,所以上面的面试题中 的结果是 而 的结果是 提醒:越是貌似简单的面试题其中的玄机就越多,需要血试者有相当深厚的功力。 和的区别 答:运算符有两种用法:按位与;逻辑与ε运算符是短路与运算。逻辑与跟短 路与的差别是非常巨人的,虽然二者都要求运算符左右两端的布尔值都是整个表达式 的值才是 之所以称为短路运算是因为,如果左边的表达式的值是 右边 的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用而不是,例如 在验证用户登录时判定用户名不是而且不是空字符串,应当写为: 二者的顺序不能交换,更不能用运算符,因为第一个条件如果 不成立,根本不能进行字符串的 比较,否则会产生 异常。注意: 逻辑或运算符()和短路或运算符()的差別也是如此。 补充:如果你熟悉 那你可能更能感受到短路运算的强大,想成为 的高手就先从玩转短路运算开始吧 3114 解释内存中的栈 堆和静态区 的用法。 答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场 保存都使用内存中的栈空间;而通过关键字和构造器创建的对象放在堆空间;程序中 的字面量()如直接书写的 和常量都是放在静杰区中。栈空间操作起来 最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用 的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。 上面的语句中变量放在栈上,用创建出来的字符串对象放在堆上,而这个字 面量放在静态区。 补充:较新版本的(从 的某个更新开始)中使用了一项叫逃逸分析的技术, 可以将一些局部对象放在栈上以提升对象的操作性能 等于多少? 等于多少? 答 的返回值是 的返回值是。四舍五入的原理是 在参数上加然后进行下取整。 是否能作用在上,是否能作用在上,是否能作用在上 答:在 以前, 中 只能是 从 开始 中引入了枚举类型,也可以是类型,从开始,还可以是字符串 (),但是长整型()在目前所有的版本中都是不可以的。 、用最有效率的方法计算乘以? 答: (左移位相当于乘以的次方,右移位相当于除以的次方)。 补充:我们为编写的类重写 方法时,可能会看到如下所示的代码,其实我们不 太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素 数,为什么通常选择这个数?前两个问题的答案你可以自己百度一下,选择是因为 可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能凵经想到了: 等价于 左移位相当于乘以的次方再诚去自身就相当于乘 以,现在的都能自动完成这个优化 4/114 、数组有没有 方法? 有没有 方法? 答:数组没有 方法,有 的属性。 有 方法 中,获得 字符串的长度是通过属性得到的,这一点容易和混淆。 在中,如何跳出当前的多重嵌套循环? 答:在最外层循环前加个标记如,然后用 可以跳出多重循环。( 中支持带标签的和 语句,作用有点类似于和中的语句,但是就 像要避免使用一样,应该避免使用带标签的和 ,因为它不会让你的程 序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好) 、构造器( )是否可被重写( )? 答:构造器不能继承,因此不能被重写,但可以被重载。 、两个对象值相同 但却可有不同的 这句话对不对 答:不对,如果两个对象和满足 ,它们的哈希码( 相同 对于 方法和 方法是这样规定的:如果两个对象相同( 方法返回 ,那么它们的 值一定要相同:如果两个对象的 它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就么发 在使用容器时,相同的对象可以出现在集合中,同时增加新元素的效率会大大下降 (对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降) 补充:米于 和 方法,很多程序都知道,但很多人也就是仅仅知道 而己,在 的大作《 》(很多软件公司,《 《编程思想》以及《重构:改善既有代码质量》是程序员必看书籍,如果你还没 看过,那就赶紧去亚马逊买一本吧)中是这样介绍 方法的:首先 方法必须满 足自反性( 必须返回)、对称性( 返回时 也必须 返回)、传递性( 和 都返回时, 也必须返回) 和致性(当和引用的对象信息没有被修改时,多次调用 应该得到同样的 返回值),而且对于任何非值的引用, 必须返回 实现高质量的方法的诀窍包括:使用操作符检查参数是否为这个对象的引用; 5114 使用 操作符检查参数是否为正确的类型;对于类中的关键属性,检查参数 传入对象的属性是否与之相匹配;编写完方法后,问自己它是否满足对称性、传 递性、一致性;重写时总是要重写 ;不要将方法参数中的 对象替换为其他的类型,在重写时不要忘掉 注解。 、是否可以继承类? 答: 类是类,不可以被继承。 补充:继承本身就是一个错误的行为,对类型最好的重用方式是关联关系 )和依赖关系()而不是继承关系() 、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回 变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数 被传递到方法中时,参数的值訫是对该对象的引用。对象的属性可以在被调用过程中被改 变,但对对象引用的改变是不会影响到调用者的。和中可以通过传引用或传输出参 数来改变传入的参数的值。在中可以编写如下所示的代码,但是在中却做不到。 说明:中没有传引用实在是非常的不方便,这点在中仍然没有得到改进,正 是如此在编写的代码中才会出现大量的 类(将需要通过方法调用修改的引用置 类中,再将 对象传入方法),这样的做法只会让代码变得臃肿,尤 其是让从和转型为程序员的开发者无法容。 和 的区别? 答:平台提供了两种类型的字符串 和 ,它们可以储存 和操作字符串。其中是只读字符串,也就意味着引用的字符串内容是不能被改 变的。而 类表小的字符串对象可以直接进行修改 是 中引入的,它和 的方法完全相同,区别在于它是在单线程环境下使用的, 因为它的所有方面都没有被 修饰,因此它的效率也比 要高。 面试题什么情况下用运算符进行字符串连接比调用 对象的 方法连接字符串性能更好? 如果是少量的字符串拼接,可以用,如果是大量的还是用 吧 是线程安全的 是线程不安全的,很 6114 明显, 的系统开销要大,所以如果我们只有个单线程,考虑速度的话 更好。那为什么我们很少见到 呢?原因很简单,因为我们有时候 很难确定我们创建的系统会不会是多线程的,如果考虑到以后扩展的可能性,则更难确定, 所以我们更愿意使用 因为它是线程安全的,不用担心以后扩展。 面试题请说出下面程序的输出。 补充:解答上面的面试题需要清楚两点 对象的 方法会得到字符串对象在 常量池中对应的版本的引用(如果常量池中有一个字符串与 对象的 结果是 ),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常 量池中字符串的引用;字符串的操作其本质是创建了 对象进行 操 作,然后将拼接后的 对象用 方法处理成对象,这一点可以用 命令获得文件对应的字节码指令就可以看出来。 方法就是把该对象放进常量池。 、重载( )和重写( )的区别。重载的方法能否根据返回类型进行区分? 答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而 后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表 (参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在了类与父类之 间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更 好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有 特殊的要求 面试题:华为的面试题中曾经问过这样一个问题为什么不能根据返回类型来区分重载 ,快说出你的答案吧! 返回类型不同不构成重载,重载的机制是参数列表不同,即参数的类型,个数, 排列顺序。 、描述·下加载文件的原理机制? 答 中类的装载是由类加载器( )和它的子类来实现的,中的类加载 器是一个重要的运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于的跨平台性,经过编译的源程序并不是·个可执行程序,而是个或多个类 文件。当程序需要使用某个类时, 会确保这个类已经被加载、连接(验证、准备 和解析)和初始化。类的加载是指把类的文件中的数据读入到内存中,通常是创建一 个字节数组读入文件,然后产生与所加载类对应的对象。加载完成后, 对 象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证 7114 准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用) 三个步骤。最后对类进行初始化,包括:如果类存在直接的父类并且这个类还没有 被初始化,那么就先初始化父类;如果类中存在初始化语句,就依次执行这些初始化语 类的加载是由类加载器完成的,类加载器包括:根加载器( )、扩展加载器 )、系统加载器()和用户自定义类加载器( 的子 类)。从 )开始,类加载过程采取了父亲委托机制()。 更好 的保证了平台的安全性,在该机制中 自带的 是根加载器,其他的加 载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为 力时才由其子类加载器自行加载 不会向程序提供对 的引用。下面是 关于几个类加载器的说明: 般用本地代码实现,负责加载基础核心类库(); 从 系统属性所指定的目录中加载类库,它的父加载器是 又叫应用类加载器,其父类是 环境变量 或者系统属性 所指公应它是应用最广泛的关加载器。它从 目录中记载类,是用户自定义加载 器的默认父加载器。 型变量中能不能存贮一个中文汉字,为什么? 答:类型可以存储一个中文汉字,因为中使用的编码是 不选择任何特 定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个类型占 个字节(比特),所以放一个中文是没问题的 补充:使用 意味着字符在内部和外部有不同的表现形式,在内部都 是 当这个字符被从内部转移到外部时(例如存入文件系统中),需要进行 编码转换。所以中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流, 和 ,这两个类是字节流和字符流之间的适配器类, 承担了编码转换的任务;对于程序员来说,要完成这样的编码转换恐怕要依赖于 (联合体共用体)共享内存的特征米实现了。 、抽象类 和接口( )有什么异同? 答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继 承」某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍 然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有 抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象 类中的成员可以是 默认 的,而接口中的成员全都是 的 抽象类中可以定义成员变量,而接∏中定义的成员变量实际上都是常量。有抽象方法的类 必须被声明为抽象类,而抽象类未必要有抽象方法 、静态嵌套类 和内部类( )的不同? 是被声明为静态 )的内部类,它可以不依赖于外部类实例被 实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如 下所示。 扑克类(一副扑克) 骆昊 黑桃红桃草花方块 8114 构造器 洗牌(随机乱序) 发牌 发牌的位置 下片类(一张扑克) 内部类 骆昊 花色 点数 9114 测试代码: 汏牌 发第一张牌 对于非静态内部类 只有通过其外部类对象才能创建对象 红心 自己创建一张牌 洗牌后的第一张 打印红心 面试题下面的代码哪些地方公产生编译错误? 注意 中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中和 方法都是静态方法,静态方法中没有,也就是说没有所谓的外部类对象,因此无 法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做: 、中会存在内存泄漏吗,请简单描述 答:理论上因为有垃圾回收机制()不会存在内存泄露问题(这也是被广泛 使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对 象,这些对象不能被回收,因此也会导致内存泄露的发生。例如 的 10/114 【实例截图】
【核心代码】

标签:

实例下载地址

Java面试笔试题大汇总(最全+详细答案)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警