首页 > 编程语言 >Java面试题(三)

Java面试题(三)

时间:2023-03-27 16:46:24浏览次数:35  
标签:面试题 Java 收集器 数据库 重载 线程 进程 ArrayList

List接口有什么特点?

顺序存储、可以有重复值

 

Set接口有什么特点?

无需存储、不能有重复值

 

ArrayList与LinkedList有什么区别?

ArrayList与LinkedList都实现了List接口

ArrayList是线性表,底层是使用数组实现的,它在尾端插入和访问数据时 效率较高

Linked是双向链表,他在中间插入或者头部插入时效率较高,在访问数据时 效率较低

 

Array 与 ArrayList 有什么不一样?

Array 与 ArrayList 都是用来存储数据的集合。

ArrayList底层是使用数组实现的,但是ArrayList对数组进行了封装和功能扩展,拥有许多原生数组没有的一些功能。

ArrayList是Array的一个升级版。

 

Map有什么特点?

以键值对存储数据

元素存储顺序是无序的

不允许出现重复键

 

JDBC操作的步骤?

加载数据库驱动类

打开数据库连接

执行sql语句

处理返回结果

关闭资源

 

在使用JDBC的时候,如何防止出现sql注入的问题

使用PreparedStatement类,而不是使用Statement类

 

怎么在JDBC内调用一个存储结构

使用CallableStatement

 

是否了解连接池,使用连接池有什么好处?

数据库连接是非常消耗资源的,影响到程序的性能指标。连接池是用来分配、管理、释放数据库连接的,

可以使应用程序重复使用同一个数据库连接,而不是每次都创建一个新的数据库连接。通过释放空闲时间较长的数据库连接避免数据库因为创建太多的连接而造成的连接遗漏问题,提高了程序性能。

 

所了解的数据源技术有哪些?使用数据源有什么好处?

Dbcp,c3p0等,用的最多的还是c3p0,因为 c3p0 比 dbcp 更加稳定,安全;通过配置文件的形式来维护数据库信息,而不是通过硬编码。当连接的数据库信息发生改变时,不需要再更改程序代码就实现了数据库信息的更新。 

 

线程同步的方法

wait():让线程等待。将线程存储到一个线程池中。

notify():唤醒被等待的线程。通常都唤醒线程池中的第一个。让被唤醒的线程处于临时阻塞状态。

notifyAll():唤醒所有的等待线程。将线程池中的所有线程都唤醒。

 

线程与进程

进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位

 

进程和线程的关系

1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程

2、资源分配给进程,同一进程的所有线程共享该进程的所有资源

3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步

4、线程是指进程内的一个执行单元,也是进程内的可调度实体

 

进程和线程的区别

1、调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

2、并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行

3、拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源

4、系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。

 

& 和 && 的区别

& 是位运算符

&& 是布尔逻辑运算符

在进行逻辑判断时用 & 处理的前面为 false 后面的内容仍需处理,用 && 处理的前面为 false 不再处理后面的内容。

 

重载与重写

1、Overload为重载,Override为重写,方法的重写和重载是 java 多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。

2、 如果在子类中定义某方法与其父类有相同的名称和参数,我们该说方法被重写(Override)。子类的对象使用这个方法时,将调用子类中的定义。对它而言,父类中的定义如同被"屏蔽“了"。

3、如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overload)。

 重载的方法是可以改变返回值的类型。

 

如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

不会,在下一个垃圾回收周期中,这个对象将是可被回收的。

 

串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序。而串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存)就足够了。

 

有不对欢迎指出,侵删

标签:面试题,Java,收集器,数据库,重载,线程,进程,ArrayList
From: https://www.cnblogs.com/yvette-hathaway/p/17261227.html

相关文章

  • rocketmq 报错ERROR: Please set the JAVA_HOME variable in your environment, We ne
    以下命令全部按顺序执行unlink/usr/bin/javacunlink/usr/bin/jarunlink/bin/java ln-s/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/j......
  • 原来还能这样看Java线程的状态及转换
    作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、JAVA底层、面试、职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」大家好,我是呼噜噜,最近一直在梳理Jav......
  • 一套sql面试题的mysql解法
    1.表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sqlselect*fromTorderbyc[desc]limit20,102.表T(a,b,c,d)和表T1(a1,b1,c1,d1),表T中a字段是T1中......
  • java远程链接SSH,并执行命令
    远程连接SSh,可以配合webhook使用,自动打包处理,在docker部署下,是一种成本很小但是很实用的方案。本方案使用ssh2进行链接。正常来说有两种链接方式,这里选择startShell,这种方式......
  • kettle java api save 任务 无法load trans/job
    使用save保存publicstaticvoidrunTrans(StringtransName,KettleDatabaseRepositoryrepository){try{RepositoryDirectoryInterfacedir......
  • android stdio中java代码对于xml的操作
    首先,我们需要在java代码中声明要修改的页面,例如LinearLayoutlistView=findViewById(R.id.line_station_liebiao);其次声名我们加入希望添加的组件,例如LinearLayout......
  • Java 反射
    我在很久之前写过一次,也都是从网上搬运的知识,这段时间一直在学python,其他的知识就会有遗忘,我再复习一遍。 一.反射的基本概念使用反射机制可以构造类对象,动态获取当前......
  • Java面试题(二)
    JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的运行提供......
  • Java数据结构 HashMap 哈希表定义使用
    1.HashMapHashMap是一个散列表,它存储的内容是键值(key-value)映射。其中key和value类型可以相同也就而已不同,根据定义。2.HashMap使用1)定义HashMap<Integer,String>hashmap1......
  • java 类的初始化顺序
    父类的静态字段-->父类静态代码块-->子类静态字段-->子类的静态代码块-->父类成员变量-->父类构造代码块-->父类构造方法-->子类成员变量-->子类构造代码块-->子类构造方法......