JAVA基础面试题整理

1.Java中final、finally、finalize的区别

简单区别:

final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。

2.error和exception有什么区别?

Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。

Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

Exception又分为运行时异常,受检查异常。

运行时异常,表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常。

受检查异常,是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。

3.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

1、什么是Set?(what)

Set是Collection容器的一个子接口,它不允许出现重复元素,当然也只允许有一个null对象。

2、如何来区分重复与否呢?(how)

“ 用 iterator() 方法来区分重复与否 ”,这是在网上流传的答案,个人认为这是个错误的答案。JPI中写的很明白:“set 不包含满足

e1.equals(e2) 的元素对 e1 和 e2 ”,由此可见回答使用equals()区分更合适。

3、为什么用equals()而不用==来区分?(why)

应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据Java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。

Static Nested Class (静态嵌套类)是Inner Class(内部类)的一种,

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

Overload和Override的区别?

Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系
Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类,同一个方法名,不同的方法参数或返回值。

备注:它们都是是Java多态性的不同表现

构造器constructor是否可被override

1.Constructor不能被继承,所以Constructor也就不能被override,但是可以overload,所以你可以看到有多个构造函数这种情况。

2.不可以 ,每一个类必须有自己的构造函数,负责构造自己这部分的构造

子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数

List、Map、Set三个接口,存取元素时,各有什么特点?

List 以特定次序来持有元素,可有重复元素。即,有序可重复。

Set 无法拥有重复元素,内部排序。即,无序不可重复。

Map 保存 key-value 值,value可多值。一一映射。

Hashtable和HashMap的区别:

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。

jsp中动态include与静态include

动态INCLUDE在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示;

静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管

jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含@ include是先把文件包含就来,然后统一编译 先包含,后编译

Java中 forward 和redirect的区别

使用forward的时候浏览器不知道它所请求的具体资源来源,所以地址栏不会变;

使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。

forward,转发页面和转发到的页面可以共享request里面的数据.

redirect,不能共享数据.

jsp有哪几个内置对象?

1.request -->触发服务调用的请求 -->范围是:request

2.response -->对请求的应答 -->范围是:page

3.session -->为请求的客户创建的session对象 -->范围是:session

4.application -->从 servlet 配置对象获得的 servlet 上下文(如在getServletConfig() getContext()的调用中) -->范围是:application

5.out -->向输出流写入内容的对象 -->范围是:page

6.pageContext -->本 JSP 的页面上下文 -->范围是:page

7.page -->实现处理本页当前请求的类的实例 -->page

8.config -->本 JSP 的 ServletConfig -->page

9.exception -->表示JSP页面运行时产生的异常 -->Page

Servlet 生命周期:

Servlet 加载--->实例化--->服务--->销毁。

1,初始化阶段 调用init()方法

2,响应客户请求阶段  调用service()方法

3,终止阶段  调用destroy()方法

left join inner join right join 区别

left\right join是外部连接,inner join是内连接

外部连接有主表与从表,主表在left中是左侧表,right中是右侧表,主表数据会全部显示,从表数据则只显示关联部分匹配的数据,无匹配的数据用null补全

内连接则只显示两表关联条件匹配的数据

注:所谓关联条件即是指on的条件

oracle常用函数

Oracle SQL 提供了用于执行特定操作的专用函数。这些函数大大增强了 SQL 语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。 Oracle 数据库中主要使用两种类型的函数:

1. 单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果,

比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整

数列)。常用的单行函数有:

  • 字符函数:对字符串操作。
  • 数字函数:对数字进行计算,返回一个数字。
  • 转换函数:可以将一种数据类型转换为另外一种数据类型。
  • 日期函数:对日期和时间进行处理。

2. 聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)

返回结果集中 x 列的总合。

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

数据库索引是为了增加查询速度而对表字段附加的一种标识。

索引的作用:

1.通过创建唯一索引,可以保证数据记录的唯一性。
2.可以大大加快数据检索速度。
3.可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
4.在使用ORDER BY和GROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。

以上就是本次介绍全部知识点内容,感谢大家的学习和对我们的支持。

(0)

相关推荐

  • JAVA面试题String产生了几个对象

    面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=new String("Hello"); System.out.pr

  • Java工程师面试题一面二面整理

    秀强信息公司关于JAVA的面试内容 这个公司做学前教育,老板喜欢谈理想和谈情怀来压工资.属于18年年底成立的小公司,Java开发三个人吧. 一面(电话): 1.服务没挂,但是不可用的,Nginx感知不到,怎么办? 2.下单过程库存是怎么处理的?下单卡住多久释放锁定的库存? 3.多线程同步?synchronized,wait,notify.notifyALL 4.wait和sleep以及yield 5.HashMap和ConcurrentHashMap 6.ThreadLocal用过吗? 7.Re

  • 面试题:Java中如何停止线程的方法

    如何停止线程是Java并发面试中的常见问题,本篇文章将从答题思路到答题细节给出一些参考. 答题思路: 停止线程的正确方式是使用中断 想停止线程需要停止方,被停止方,被停止方的子方法相互配合 扩展到常见的错误停止线程方法:已被废弃的stop/suspend,无法唤醒阻塞线程的volatile 1. 正确方式是中断 其实从逻辑上也很好理解的,一个线程正在运行,如何让他停止? A. 从外部直接调用该线程的stop方法,直接把线程停下来. B. 从外部通过中断通知线程停止,然后切换到被停止的线程,该线程

  • java String校招面试题过程详解

    面试题一:判断下列程序运行结果 package String_test; public class test_1 { public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "HelloWorld"; String str3 = new String("HelloWorld"); String str4 = "Hello&quo

  • Java面试题 从源码角度分析HashSet实现原理

    面试官:请问HashSet有哪些特点? 应聘者:HashSet实现自set接口,set集合中元素无序且不能重复: 面试官:那么HashSet 如何保证元素不重复? 应聘者:因为HashSet底层是基于HashMap实现的,当你new一个HashSet时候,实际上是new了一个map,执行add方法时,实际上调用map的put方法,value始终是PRESENT,所以根据HashMap的一个特性: 将一个key-value对放入HashMap中时,首先根据key的hashCode()返回值决定该E

  • JAVA基础面试题整理

    1.Java中final.finally.finalize的区别 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. 2.error和exception有什么区别? Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件

  • python基础面试题整理

    Python基础语法相关 一.Python中的pass语句的作用是什么? pass语句什么也不做,一般作为占位符 或者创建站位程序,pass语句不会不执行任何操作. 二.Python是如何进行类型转换的? python提供了将变量或值从一种类型转换为另一种类型的内置函数.比如int函数能将符合数学格式数字型字符串转换为整型.否则,返回错误信息. 三.Python是如何进行内存管理的? Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存)

  • Java基础面试题之volatile详解

    目录 1.volatile保证可见性 1.1.什么是JMM模型? 1.2.volatile保证可见性的代码验证 1.2.1.无可见性代码验证 1.2.1.volatile保证可见性验证 2.volatile不保证原子性 2.1 什么是原子性? 2.2 不保证原子性的代码验证 2.3 volatile不保证原子性的解决方法 2.3.1 方法1:使用synchronized 2.3.2 方法1:使用JUC包下的AtomicInteger 3.volatile禁止指令重排 3.1 什么是指令重排? 3

  • Java热门笔试试题整理

    小编为面试Java程序员的朋友们整理了2017非常热门的面试中的笔试试题,如果你是一个正在准备面试Java程序员的读者,赶快学习一下吧. 1,下列说法正确的是() A.一个文件里可以同时存在两个public修饰的类 B.构造函数可以被重写(override) C.子类不能访问父类非public和protected修饰的属性 D.final修饰的类可以被继承 答案:C 一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一

  • Java多线程和并发基础面试题(问答形式)

    本文帮助大家掌握Java多线程基础知识来对应日后碰到的问题,具体内容如下 一.Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进程.线程可以被称为轻量级进程.线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源. 2. 多线程编程的好处是什么? 在多线程程序中,多个线程被并发的执行以提高程序的效率,C

  • 2018版java多线程面试题集合及答案

    java多线程面试题整理及答案,供大家参考,具体内容如下 1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点. 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用

  • Java后端面试题最新整理

    我们学习java知识,除了要做基础的程序运行外,不可避免的要在面试中遇到一些理论的考察.有些小伙伴程序做的不错,但是理论上面有所欠缺.这里小编整理了一些常见的后端面试题,希望能对小伙伴们有所帮助,下面一起看看吧. 一.八种基本数据类型的大小,以及他们的封装类. byte(Byte) 1 ,short(Short) 2 ,int(Integer) 4 ,long(Long) 8 ,float(Float) 4 ,double(Double)8,boolean(Boolean),char(Chara

  • java关于string最常出现的面试题整理

    在学习了不少使用string处理字符串的方法后,对于这方面基础内容模块已经初步掌握.对于java面试时,字符串是比较基础和重点的模块,所以在学习和复习的时候,都需要在这方面做重点的学习.我们把试题分为基础内容和实例代码试题的运行两个部分,下面一起来看看具体内容. 一.基础内容 1.String类型是基础类型吗 基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个 Java.lang.String类是final类型的,因此不能继承,修改

  • Java 基础之修饰符关键词整理

    Java 基础之修饰符关键词整理 我成为一个Java程序员距今已有一段时日.最近,有人问我关于Java修饰符关键字的一个问题,但我根本不知道那是什么.所以我觉得除了实际编程和算法,我也有必要学习这些内容. 通过谷歌搜索,我只得到一些琐碎的要点,并不完整.所以我以此主题写了这篇文章.这也是一个可用于测试你的计算机科学知识的面试问题. Java修饰符是你添加到变量.类和方法以改变其含义的关键词.它们可分为两组: 访问控制修饰符 非访问修饰符 让我们先来看看访问控制修饰符,以及如何使用它们的一些代码示

  • Java基础语法之二维数组详解

    一.二维数组 进入正题之前.首先为了便于大家理解,我画了一个图: xx枪战游戏中, 我是一个刚刚注册账号的小白,系统送了我两把枪,此时,我的武器库只有这么一层(可以理解为一位数组,枪就是对应的数组中对应的元素) 经过艰苦卓绝的战斗,终于有了一笔钱,现在我打算配置好的游戏装备,我现在有了一个枪柜,它可以存放三层的枪械,每一层都可以放多把武器(这个就是二维数组,有多层,每层都是一个一维数组) 随着游戏时长和我的高超技术,获取游戏装备的效率越来越高了,一个枪柜已经存不下了,于是,我就有了多个枪柜(这个

随机推荐