【问答篇】Java 基础篇面试题(一)

news2024/12/25 16:29:59

 每天进步一点~

01、问:空字符串的作用

package com.neuedu.nineteen;
 
public class Test {
    public static void main(String[] args) {
        String s="";
        for (char  i = 'a'; i < 'd'; i++) {
            s=s+i;//输出abc
            s=i+s;//输出cba
        }
        System.out.println(s);
    }
}

答:如题所示,当进行s=s+i的时候,s在前和s在后输出的结果是相反的。空字符串在前时是正着输出,空字符串在后是逆着输出

02、问:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 

答:第一种情况,s1是short类型,在计算s1=s1+1时,前边是short型,后边是int型,不能自动转换。由于没有强转,要报类型错误。

第二种情况,使用了+=这个java自带的运算符,java内部会对其进行处理,所以编译通过,不会报错。

03、问:说说&和&&的区别。 

答:&和&&都表示与的意思,既表达式俩边都成立,结果才成立。

&&是逻辑运算符,&&有短路作用,既当表达式左边为假时,不需要计算右边,整个的结果直接为假;&没有

&是位运算符,&的左右俩边可以是布尔类型,也可以是数值;&&俩边只能是布尔类型

04、问:Integer与int的区别 

答:int是八大基本数据类型之一,Integer是int的封装类。

int的默认值是0,Integer的默认值是null,此时的0代表这个数赋值0,而null代表没接收到这个值

Integer提供了与整数相关的操作,int没有

05、问:==与equals的区别

答:对于基本数据类型==是判断的值是否相等;对于引用数据类型是判断是否为同一个对象

equals是判断值是否相等

06、问:override (重写) 和 overload (重载) 的区别

答:

  • 重载是在一个类中,方法名相同,参数列表不同(参数类型和参数个数)的一种现象
    • 重载与返回值类型无关
    • 不能通过访问修饰符进行重载
  • 重写是在父子类中,子类重写父类的方法,要求方法名与参数列表,返回值类型完全相同。子类重写父类规范要在子类的方法前加注解@Override
    • 重写的返回值类型可以改,但只能是父子类
    • 重写的访问修饰符得大于等于原来的
    • 不能重写私有方法
    • 参数列表的顺序与类型必须一样,变量名可不同

07、问:接口与抽象类的区别

答:

  • 抽象类是用abstract修饰的类,抽象类不能new对象。
  • 接口是比抽象类还抽象的“类”

区别:

  1. 抽象类中可以有抽象方法也可以有非抽象方法,接口中只能有抽象方法

  2. 抽象类中可以有成员变量,接口中只能有常量,用public static final修饰,默认可不写

  3. 抽象类有构造方法,接口没有构造方法

  4. 抽象类中的方法的访问修饰符可以是public,protected,默认;接口中方法的访问修饰符只能是public,并且默认值是public  abstract

  5. 抽象类中可以有静态方法,接口中不能有静态方法(JDK1.8之后接口中增加了静态方法和默认方法)。(static是类名直接调用,abstract是子类实现创建对象调用,如果一起修饰,自相矛盾了)

  6. 一个类可以实现多个接口,只能继承一个抽象类

08、问:JDK,JRE,JVM的联系与区别

答:

  • JDK是java开发工具包,JDK包括JRE,类库,java工具
  • JRE是java运行环境,JRE包括JVM,JRE里有运行.class的java.exe

  • JVM是java虚拟机,java虚拟机在执行字节码时,把字节码解释成具体平台的机器指令执行,这也是java语言跨平台的根源,是“一次编译,到处运行”的原

  • 联系:
    • JDK下的jre文件夹下有俩个文件夹lib和bin;在这里可以理解为bin就是jvm,lib就是类库;所以JRE=JVM+类库
    • 我们利用JDK开发属于自己的java程序,javac编译成字节码,在JRE上运行这些字节码,JVM解析这些字节码,最终映射到CPU指令集或OS的系统调用
  • 区别:
    • JDK与JRE的区别:
      • JDK有javac.exe;JRE没有
      • JDK是开发环境,JRE是运行环境
    • JRE与JVM的区别:
      • 1.JVM执行.class需要JRE下lib类库的支持(尤其是rt.jar

09、问:在java中如何跳出多层循环

答:可以利用“打标签”的形式,举个栗子:

ok:  for (int i = 0; i < 3 ; i++) {
            for (int j = 0; j < 4; j++) {
                for (int k = 0; k < 5; k++) {
                    break ok;
                }
            }
        }

10、问:String s = new String("xyz");创建了几个String Object

答:创建了俩个对象或一个对象,如果常量池中没有“xyz”第一次=在常量池中创建了一个字符串对象,第二次new又创建了一个字符串引用对象;如果常量池中有“xyz”,那就只是new的时候创建了一个对象。

11、问:Java有没有goto?

答:java中的保留字,现在在java中没有使用。

12、问:String等三者的区别?

答:

  1. String是不可变字符串,StringBuilder和StringBuffer是可变字符串
  2. 从运行效率看,StringBuilder>StringBuffer>String
  3. StringBuilder非线程安全,StringBuffer线程安全

总结:String适合少量字符串的操作、StringBuilder适合单线程大量数据的操作、StringBuffer适合多线程大量数据的操作

13、问:静态和实例的区别?

答:

  1. 静态变量用static修饰,实例变量不需要
  2. 静态变量是属于类的,实例变量是属于对象的
  3. 当一个对象把静态变量的值改了,其他对象调用时它的值也跟着变了;实例变量是独立的,一个对象修改它的值不会影响另一个对象调用它的值

14、问:switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 

答:可以作用在byte上,因为byte能自动转为int;不能作用在long上,long转int不能自动转,需要强转;在jdk1.7以后可以作用在String上

15、问:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 

答:是引用不能变,即对象的指向不能变,但引用的对象即引用里的值是可以变得,因为它又没有用final修饰。

基本数据类型的值是不能更改的 比如 final int a=1;a=2;那肯定编译也过不了。因为a是final修饰的不可改变;a原来指向1,后来指向2;a的指向变了。final int[] arr= {1,2,3}; arr[0]=2;这种是可以的。因为arr的指向并没有变 只不过它里边的值可以变。

16、问:请说出作用域public,private,protected,以及不写时的区别 

答:

17、问:构造器Constructor是否可被override? 

答:构造器不能被重写,因为构造器不能被继承,但它可以重载

18、问:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答:会执行,首先明确一点是“finally块中的代码始终要执行”,也就是说不管怎样,它都会执行。并且在return前执行,执行finally后通过return退出。看下边的例子:

public class Test {
    public static String output="";
    public static void foo(int i){
        try{
            if(i==1){
                throw new Exception();
            }
            output+="1";
        }catch(Exception e){
            output+="2";
            return;
        }finally{
            output+="3";
        }
        output+="4";
    }
    public static void main(String[] args) {
        foo(0);
        foo(1);
        System.out.println(output);//13423
 
    }
}

19、问:final, finally, finalize的区别

答:

  • final修饰属性,方法,类;分别表示属性不可变,方法不可覆盖,类不可继承
  • finally是异常中的关键字,始终要执行的代码放在finally块中
  • finalize是Object的一个方法,是垃圾回收机制,重写此方法可以回收其他资源,如文件关闭。JVM不保证此方法总被调用

20、问:启动一个线程是用run()还是start()

答:用 start() 方法,start方法内调用了run方法,如果直接调用run方法,那么就相当于没有开启线程而直接调用的run方法。

21、问:Vector和ArrayList的区别

答:

  • ArrayList和Vector是基于数组的,有下标,有序,元素可重复。
  • Vector就是把ArrayList中的所有方法加了synchronized

所以,Vector是线程安全的,ArrayList是线程不安全的,但Collections下有静态方法,synchronizedList来代替Vector,Vector在日常中很少使用。

22、问:System.out.println()分别代表什么?

答:System.out.println()是我们日常使用最多的输出语句,其中System是一个类,out是这个类中的一个静态常量对象,是PrintStream类型的,println()是PrintStream类的方法,用于输出。

23、问:比较throw和throws

答:

  • throws是声明异常的关键字,其后是一个异常类,比如throws IOException
  • throw是抛出异常的关键字,其后跟着一个异常对象,比如throw  new IOException()

24、问:垃圾回收的原理和优点

答:垃圾回收是一个低级别的线程运行,在不知情的情况下对堆内存中的闲置的或者长期没使用的对象进行回收。

优点:

1)不需要考虑内存管理;

2)防止内存泄漏,有效的管理内存;

3)对象不再有作用域的问题,只有对象的引用存在作用域;

4)程序员不能实时的对某个对象或所有对象调用垃圾回收器

25、问:super.getClass()方法调用 

import java.util.Date; 
 public class Test extends Date {
 public static void main(String[] args) { 
        new Test().test(); 
 }   
   public void test() { 
        System.out.println(super.getClass().getName());  
    } 
}

答: 输出的结果是Test

原因:由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在 test方法中调用super.getClass().getName()方法,等效于调用getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。

如果想得到父类的名称,应该用如下代码:

 getClass().getSuperClass().getName(); 

 

26、问:sleep() 和 wait() 有什么区别? 

答:

  1. 1.sleep是Thread类下的方法;wait是Object下的方法
  2. sleep是使线程休眠,不释放锁;wait是使线程等待,释放锁
  3. sleep让出的是cpu,如果此时代码是加锁的,那么即使让出了CPU,其他线程也无法运行,因为没有得到锁;wait是让自己暂时等待,让出同步锁,等待其他线程执行完了,再来执行自己
  4. 调用sleep进入阻塞状态;调用wait进入就绪状态

27、问:线程的基本概念、线程的基本状态以及状态之间的关系 

答:线程是执行和调度的基本单位,是进程中一个执行过程,一个进程有多个线程,线程间共享内存,如果是单核CPU,那么CPU一会访问a线程,一会访问b线程,线程之间切换很快,给人的感觉是他们在同步执行。

线程的基本状态分为:新生状态,就绪状态,运行状态,阻塞状态,死亡状态

关系

  • 调用start()方法线程转为就绪状态
  • 调用wait()方法线程转为就绪状态
  • 调用sleep()方法线程转为阻塞状态
  • 就绪,运行之间是相互转换的

28、问:Collection 和 Collections的区别

答:

  • Collection是集合的最顶层接口,这个接口下有List和Set俩个子接口
  • Collections是针对集合的一个帮助类,里边有很多静态方法,用于集合的搜索排序等

29、问:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 

答:

  • 如果是在hashMap中不对,反之这句话是对的。
  • 如果对象保存在hashMap或hashSet中,那么她们的值相等,hashCode也一定相等
  • 如果没有保存在hashMap或hashSet中,那么与hashCode没什么关系了,她们的hashCode值可以不等

30、问:说出一些常用的类,包,接口,请各举5个 

答:

  • 常用的类:String, Arrays, Collections, System, Integer, BufferedReader, BufferedWriter
  • 常用的包:util, io, sql, awt, list, lang
  • 常用的接口:List, Map, Set, Serializable, Comparable, Runnable


Thanks~

..

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计高校迎新管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

(五)springcloud之Nacos注册中心-2

最近因口罩事件&#xff0c;也被“阳"了。自己在宿舍&#xff0c;闲来无事。整理下Nacos的注册中心的知识点。 模块&#xff1a; 1.父工程&#xff08;管理版本&#xff09; 2.公共模块&#xff1a;Common-API 3.测试模块&#xff1a;NacosClientConfigConsumer80 版本&am…

Vue3基础语法(⼀)

文章目录02——Vue3基础语法&#xff08;⼀&#xff09;VSCode代码片段模板语法Mustachev-once指令v-textv-htmlv-prev-bind绑定class对象语法数组语法绑定style动态绑定属性绑定一个对象v-on基本使用参数传递修饰符02——Vue3基础语法&#xff08;⼀&#xff09; 上一节中的问…

股票列表接口数据API

国内股票行情股票列表接口数据API&#xff0c;包含5分钟、日线。 JSON返回示例 { "code": "000000", "message": "success", "result": [ "2017-04-10 14:55:00,15.190,15.230,15.180,15.190,3838901", &qu…

毕业设计-基于大数据的股票预测系统-python

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

数据挖掘|主成分分析|

一、主成分分析 在实际问题中&#xff0c;我们经常会遇到研究多个变量的问题&#xff0c;而且在多数情况下&#xff0c;多个变量之间常常存在一定的相关性。由于变量个数较多再加上变量之间常常存在一定的相关性&#xff0c;势必增加了分析问题的复杂性。如何从多个变量中综合为…

2022年下半年的软考成绩今天可以查询啦!!!

自2022年11月5-6日软考考试完成后&#xff0c;经过一个多月的等待&#xff0c;终于在2022年12月15日软考成绩出来啦&#xff01; 相信很多小伙伴们都怀着激动与愉悦的心情&#xff0c;迫切想查询一下自己的成绩&#xff01; 下面是弘博创新小编整理的软考成绩查询流程。 软考成…

Python+QT美颜工具源码

程序示例精选 PythonQT美颜工具源码 如需安装运行环境或远程调试&#xff0c;见文章底部微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonQT美颜》编写代码&#xff0c;功能包括了亮度&#xff0c;磨皮&#xff0c;风格化&#xff0c;铅笔化…

软件测试人员一定要会的微信小程序测试点

微信小程序&#xff1a; 不需要下载安装即可使用的应用&#xff0c; 实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或者搜一下即可打开应用。 体现了“用完即走”的理念&#xff0c;用户不用关心是否安装太多应用的问题。 应用将无处不在&#xff0c;随时可用&#…

Mysql分布式锁(一)通过jvm本地锁解决mysql并发问题及可能的失效情况

强烈建议配合之前的JVM本地锁&#xff08;一&#xff09;简单实现阅读 mysql场景 将之前的场景修改为mysql场景&#xff0c;即在数据库中保存一条数据&#xff0c;多个线程并发处理该数据。 数据库建表如下 pom.xml中新增mybatis-plus和mysql <dependency><groupId…

戴尔r730xd服务器从u盘启动设置方法(戴尔r730取消网络启动方法)

1,开机后出现提示的时候&#xff0c;按F12 2,等一会系统会自动进入BIOS选择菜单:选择system bios 回车 3,这时在选择boot setting 回车: 4,在这里选择 BIOS Boot settings 5,将网卡启动的勾选去掉&#xff0c;即默认使用C盘启动 6,退出Esc&#xff0c;会提示保存&#xff0…

C#语言实例源码系列-电脑系统挂机锁

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

[附源码]Python计算机毕业设计广西助农平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

微服务框架 SpringCloud微服务架构 多级缓存 46 JVM 进程缓存 46.2 导入商品案例【导入Demo工程】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存46 JVM 进程缓存46.2 导入商品案例【导入Demo工程】46.2.1 导入商品管理案例demo工程46 JVM 进程缓存 …

你知道吗?Python原来可以做这些

如果你准备开始学习Python或者你已经开始了学习Python&#xff0c;那么&#xff0c;你肯能会问自己&#xff1a; “我用Python究竟能做些什么&#xff1f;” 嗯&#xff0c;这是一个棘手的问题&#xff0c;因为Python有很多应用方向。但随着时间的推移&#xff0c;我发现Pytho…

Java图书管理代码

Java图书管理代码一&#xff1a;简介二&#xff1a;核心需求三: 类的设计1. 创建图书相关的类2. 创建操作相关的类3. 创建用户相关的类4. 进行整合5. 实现具体的每个 Operation大家好&#xff0c;我是晓星航。今天为大家带来的是Java语言图书馆里系统的相关的讲解&#xff01;&…

【裂缝识别】无人机裂缝图像处理系统(带面板)【含GUI Matlab源码 1727期】

⛄一、简介 1 案例背景 随着国家对公路建设的大力投入&#xff0c;我国的公路通车总里程己经位居世界前列&#xff0c;这样进一步促进了我国经济建设的发展。随着公路的大量投运&#xff0c;公路日常养护和管理已经成为制约公路运营水平提高的瓶颈&#xff0c;特别是路面状态采…

使用QtDesignerForm界面

使用QtDesignerForm界面1. 概述2. UI文件的使用分析2.2 QtDesignerForm 界面的使用3. Demo1. 概述 在进行QT开发创建UI文件通常有两种方式&#xff0c;分别是通过Qt 设计师界面类、Qt Designer Form创建。两者创建的区别如下。 通过Qt 设计师界面类创建的界面通常会包括对应的…

手把手系列:如何将小程序游戏引入自有APP?(iOS篇)

自FinClip 诞生以来&#xff0c;一直有不少开发者询问官方 FinClip 什么时候可以支持微信小游戏&#xff1f;实际上&#xff0c;从去年开始我们就把支持微信小游戏的计划做进了产品的 Roadmap。2022年底&#xff0c;我们终于在新年之前实现了对小游戏的支持&#xff01; 近期…

中文输入法中光标跟随能力触发的浏览器事件探究

:::tip 最近在着手腾讯文档的输入体验优化&#xff0c;在其中有一个不起眼的小需求引起了我的注意&#xff0c;并顺便研究了一些事件监听机制相结合的特点&#xff0c;特此记录一下填坑过程。 ::: 模拟光标跟随 大部分的主流输入法都有这样一个特性&#xff0c;在输入中文时&…