Java开发面试总结

2021/11/25 17:10:45

本文主要是介绍Java开发面试总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

主键和索引的区别?
1.主键是什么?
主键是非空唯一约束,可以是有意义的列,也可以是没有意义的列,是用做每一行的唯一标识的。创建主键的时候,Oracle数据库会自动创建为主键创建唯一值索引。
2.主键的作用?
主键就是用来唯一标识一行数据的,主键列必须非空唯一,只要满足非空唯一的都可以用做主键,联合主键是几个列的值联合在一起时是非空唯一的,共同起到唯一标识一行数据的作用,一般主键都用没意义的一列。
3.索引是什么?
索引类似书的目录结构,Oracle的索引是一种对象,是与表关联的可选对象,能够提高sql查询语句的速度,索引直接指向包含所查询值的行的位置,减少磁盘I/O,索引和表是相互独立的物理结构,Oracle自动使用并维护索引,插入、删除、更新表后,自动更新索引。
4.主键和索引的关系?
主键(primary key)是列的一种约束,约束是对指定列中的值的要求(限制)。
在指定主键或创建唯一约束时,Oracle数据库会自动创建唯一值索引,用户也可以创建非唯一值索引,用来提高访问效率,但效率要在数据量大的时候才能有所体现。
5,约束和索引的区别?
约束用来检查数据的正确性,索引是用来优化查询的。
6.如何创建索引?
create index 索引名 on 表名(列名);
7.什么时候创建索引?
一般创建索引的列是某列经常作为where子句的限定条件或者作为连接条件;列包含的数据量很大并且有很多非空的值;经常需要order by,group by,distinct的列。查询表时,查询的是整张表的每一条记录,查询索引是先按照有索引的列查到指定行,再查询这一行的记录,所以索引可以提高排序查询的时间,一般建立索引的表不经常进行修改。

性别是否适合做索引?
因为索引也是有内存开销的,需要存储,所以区分度不高的字段不适合做索引,不过这类字段可以做联合索引的一部分。

左外连接和内连接的区别?
多表查询,也叫表联合查询,一条sql语句涉及到的表有多张,表中的数据通过特定的连接进行联合显示,连接查询有等值连接,不等值连接,外连接,自连接。外连接又分为左外连接,右外连接,全连接。
左外连接的sql语句结构是select 列名 from 表1 left outer join 表2 on 连接条件,outer可以省略,左外连接是在左表的基础上,根据条件整合对右表笛卡尔积的查询。
内连接是指取出符合过滤条件的记录,内连接分为等值连接,不等值连接,自然连接。
等值连接是利用一张表中某列的值和另一张表中某列的值相等的关系,把两张表连接起来,满足条件的数据才会组合。
不等值连接是一张表中的某一列和另一张表中的两列有关系,比如范围。

sql语句的基本结构?

select 列名
from 表名
where 条件
group by 分组条件
having 分组筛选条件
order by 排序条件

(sfwgho)

select语句的执行顺序?

from组装表
where指定条件进行筛选
group by数据分组
聚合函数的计算
having条件筛选,不同于where的是可以使用聚合函数的计算结果
select查询,计算运算表达式
order by结果集排序

(fwg聚合hso)

where的作用?
条件筛选,后面一定不能出现组函数,只能紧跟在from后面

重载和重写的区别?
方法重载发生在同一个类,方法重写发生在子父类之间。
重载的是方法名相同,参数列表不同,方法的修饰符、返回类型、抛出的异常都不作限制。
重写是方法名相同,参数列表也相同,访问控制修饰符可以扩大不可以缩小,方法抛出的异常类型的范围可以缩小,不能扩大,返回类型如果是引用类型,子类重写的方法的返回类型可以和父类一致,也可以是父类返回类型的子类,但返回类型是基本数据类型时,子类返回类型就必须和父类一致。子类继承父类,如果子类没有重写,那么调用父类继承过来的方法,如果子类重写了就调用子类重写的方法。

Oracle数据库和MySQL数据库的区别?
1.Oracle数据库是一个对象关系型数据库管理系统,要收费。MySQL是一个开源的免费的关系型数据库管理系统。
2.Oracle是大型数据库,MySQL是中小型数据库。
3.Oracle可以设置用户权限、访问权限、读写权限等,MySQL不能。
4.Oracle默认不自动提交,需要用户手动提交。MySQL默认是自动提交。
5.Oracle数据库实现翻页用伪列rownum标识结果集的位置,MySQL数据库实现翻页用limit标识开始位置、记录个数。
6.Oracle数据库的日期字段只有DATE(包含年月日时分秒)、系统时间是SYSDATE,MySQL数据库有两种日期字段DATE和TIME。
7.Oracle数据库在增长主键的时候要使用序列,MySQL数据库自动增长主键。

左外连接和右外连接的区别?
左外连接是基于左表,根据条件整合对右表进行笛卡尔积的查询,右外连接是基于右表。

SQL语句有哪些?

sql语句类型基本结构
DQL(数据查询语句)select
DML(数据操作语句)insert、update、delete
DDL(数据定义语句)crete、alter、drop、truncate
TCL(事务控制语句)commit、rollback、savepoint
DCL(数据控制语句)grant、revoke

(qmdtc)

数据库中声明游标的关键字是什么?
declaredeclare cursor 表名 is select语句

视图是什么?
视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。

视图的特点?
视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行insert,update,delete操作。
视图不能被修改,表修改或者删除后应该删除视图再重建。
视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。
视图可以被嵌套,一个视图中可以嵌套另一个视图。
视图不能索引,不能有相关联的触发器和默认值,sql server不能在视图后使用order by排序。

视图的作用?
视图可以简化用户处理数据的方式;
不必要的数据或敏感数据可以不出现在视图中;
视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限;
视图使用户能够在表的架构更改时为表创建向后兼容接口;
视图允许用户以不同方式查看数据;
可使用视图将数据导出到其他应用程序。

elasticsearch集群监控状态?
green绿灯,所有分片正确运行,集群健康;
yellow黄灯,主分片正确运行副本分片缺失,有一定风险;
red红灯,主分片缺失,这部分数据完全不可用。
(三原色)

hive上查看sql执行计划的命令是什么?
Hive的Explain命令,用于显示SQL查询的执行计划。Hive查询被转化成序列阶段(这是一个有向无环图)。这些阶段可能是mapper/reducer阶段,或者是Metastore或文件系统的操作,如移动和重命名的阶段。

Hyperbase依靠什么存储底层数据?
Transwarp Hyperbase实时数据库是建立在Apache HBase和Elasticsearch基础之上,融合了多种索引技术、分布式事务处理、全文实时搜索、图形数据库在内的实时NoSQL数据库。
hyperbase是基于开源hbase+hive的体系结构,融合了全局索引、全文索引,加入了自己的序列化反序列化编码格式,集成在星环的一站式大数据平台TDH上,对sql的支持度更加友好,底层依然是依托于开源的hbase,目前最新的星环大数据平台版本中使用的是开源的hbase1.3.1版本。
hyperbase支持两种表结构:hyperbase表(对应开源,建表语法和开源类似)、hyperdrive表(星环自研)。

数组a[i,j],每个元素长为3个字节,i的取值范围是1~8j的取值范围是1~10数组从内存首地址ba开始顺序存放,当以列为主进行存储时,a[5,8]首地址是多少?
BA+180。画出矩阵图,先算整列8×7,再算剩余的5个。BA+(8×7+5-1)×3=BA+180

局域网的拓扑结构有哪些?
星型结构,环型结构,总线型结构,星型和总线型结合的复合型结构。

网桥属于哪层设备?
数据链路层

结构化分析方法中,表达内部数据运动的图形化技术的是哪种工具?
数据流图

段页式存储管理的虚拟地址空间维度?
页式存储是一维的,段式存储是二维的,段页式存储也是二维的。

说说你对黑盒测试和白盒测试的理解?
白盒测试是指了解系统的内部结构和工作原理,基于这些设计测试用例。
黑盒测试是指测试人员并不清楚内部逻辑,只关注被测软件的功能实现。

软件调试常用的方法有哪些?
4种。强行排错法、回溯排错法、归纳排错法和演绎排错法(最后两种方法也可以并称为原因排除法)。

哪种测试主要依据系统设计文档?
系统测试

多线程为int类型变量x的操作,x=y、x=1、++x、x++中不需要进行同步的是哪条语句?
x=y中,y的值不确定,所以要加锁。
x++和++x:两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常。
x=1是原子操作,所以不需要加锁。
原子性:指该操作不能再继续划分为更小的操作。
Java中有哪些原子操作?
1、除long和double之外的基本类型的赋值操作
2、所有引用reference的赋值操作
3、java.concurrent.Atomic.* 包中所有类的一切操作

数据不可分割的最小单位是是什么?
数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(data item) 组成,数据项是数据的不可分割的最小单位

(10,18,22,38,49,50,89)进行排序,最不适合哪种算法?
快速排序

怎么理解面向对象?
把构成问题的各种事物,抽象成各个对象,这些对象具有解决问题的行为方法,同时对象还可以具有解决很多类似问题的行为方法,而不是只能解决一个问题。

怎么理解封装?
现实世界中对象的属性,都是隐藏在对象内部的,外界是无法直接操作和修改,所以在类中定义属性的时候,把属性隐藏起来,在外部需要访问属性的时候,就要提供公共方法对其访问,这就是封装。

怎么理解继承?
继承是类与类之间的一种is-a的关系,子类继承父类,就可以继承父类的非私有的属性和方法,子类继承父类使用关键字extends,类与类之间的继承是单继承,父类更通用、子类更具体,子类不能继承父类的构造器,创建子类对象时会默认先调用父类的构造器,对父类属性进行初始化。

怎么理解多态?
一个基类可以有出多个不同的派生类,不同的派生类有各自不同的行为,这种继承的用法就是多态。多态的前提是子类继承父类、子类重写父类的方法、父类引用指向子类对象。类实现接口是一种特殊形式的继承,多态也可以体现在类和接口的关系中。

多态有哪些应用?
编译时多态:重载。运行时多态:重写。
多态的应用:如果把父类作为形参,那就可以接收任意类型的子类对象。

linux系统中有哪些常用的命令?
链表和数组的区别?
List集合、ArrayList和LinkedList的区别?
Map集合的具体实现类、HashMap、HashTable、LinkedMap的区别?
说说你了解的Spring框架?
String类有哪些方法?
事务是什么?
构造器的特点?

怎样创建一个线程安全的单例模式?
饿汉单例就是一种线程安全的单例模式。

/*
*饿汉单例
*/
public class Singleton{
	//定义一个私有静态的实例
	private static Singleton single=new Singleton();
	//定义一个私有的构造器
	private Singleton(){}
	//定义一个公有静态的获取单例的方法,返回类型是单例类,直接返回
	public static Singleton getInstance(){
		return single;
	}
}

Spring Cloud有哪些模块?
这段代码是否会报错?

import java.io.*;
import java.util;
public class foo{
	public static void main(String[] args){
		String s;
		System.out.println("s="+s);
	}
}

同一个类的定义中,用同样的语法和参数定义了一个类,编译器因为无法区分它们,编译会报错。
由于String s没有初始化,代码不能编译通过

JDBC连接数据库步骤是怎样的?
加载驱动、导入驱动包、发送并处理sql语句、建立与数据库的连接、关闭连接

select count(*)和select count(1)以及select count(column)区别?
如果表没有主键,那么count(1)count(*)快。
如果表没有主键,那么主键作为count的条件的时候count(主键)最快。
count(*)count(1)的结果一样,都包括对null的统计,而count(column)是不包括null的统计。
可以在创建表时用设置主键约束来创建唯一索引,也可以用create index来创建索引。

"between 20 and 30"表示什么?
表示年龄在20到30之间,且包括20岁和30岁,两边都是闭合的。

Spring框架的常用注解有哪些?
Spring MVC的原理?
说说你了解的mybatis框架?
Servlet的生命周期?
cookie和session的区别?
get请求和post请求的区别?
String类能不能被继承?
不能,String是应该被final修饰的类。

String、StringBuilder、StringBuffer的区别?

基本类型的字节数?
字节型byte-1个字节-Byte、
短整型short-2个字节-Short、
整型int-4个字节-Integer、
长整型long-8个字节-Long、
单精度浮点型float-4个字节-Long、
双精度浮点型double-8个字节-Double、
字符型char-2个字节-Character、
布尔型boolean-1个字节8位-Boolean(只有true和false两种值)。

怎么理解反射机制?
说说你了解的集合?聊聊集合里面的实现类?
start和run方法的区别?
HashMap的key值可以重复吗?
排序算法
插入排序的原理?
把数组分成俩部分,将后面部分的数据一个一个的和前面部分数据的元素进行比较,如果我们指定的元素比前面部分的元素小,那么就将前面的元素往前移动一步,直到没有比我们这个指定元素还小的元素了,那么这个位置就是需要插入的地方。
选择排序的原理?
每一轮在待排序的区域中比较找到一个最小值后,把这个最小值放到已经排好顺序的区域的末尾,剩下的部分,组成一个新的待排序部分,重复上面的步骤直到排序结束。
冒泡排序的原理?
比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素重复上述工作,从第一对到最后一对。完成后,最大的数会放到最后位置。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
快速排序的实现原理?
基本数据类型和引用类型的区别是?
核心区别是:是否可以指向对象。

基本数据类型引用类型
值可以改变的值可以改变的
不可以添加属性和方法可以添加属性和方法
赋值是简单赋值赋值是对保存在栈区中的引用的赋值
比较的是值引用类型的比较是比较引用指向的地址值是否相等
存放在栈区中引用类型同时保存在栈区和堆区中;栈区中保存的是变量的标识符,堆区中保存的是变量的地址值

类型转换的规则?
java中的=号赋值操作,需要=号俩边的类型一致,也就是=号右边的数据的类型要和=号左边的变量的类型保持一致,如果不一致,那么就需要做类型的转换,分为隐式转换和显示转换。
(1)隐式转换(自动转换):只要满足条件就可以自动完成类型转换的过程。一般的数据范围较小的自动转换成数据范围比较大的类型(基本类型)。
(2)显示转换(手动转换、强制转换):编译器发现类型无法自动转换的时候,就会编译报错,可以通过在前面加上括号类型(比如:byte b=(byte)a;)进行强转。强转是有一定风险的,例如,浮点型数据,如果强行转换为整型,小数部分就需要全部抹去。显示转换一般的指大类型转换为小类型,但是类型大小其实仅限于形容基本数据类型。在引用数据类型中,子类类型的变量可以自动转换为父类类型,但父类类型的变量要转换为子类,就需要进行强制类型转换。

一个子类型的变量一定能转换为它的父类型吗?
一定

一个父类型变量一定能强转为一个子类型吗?
父类变量一定要指向子类对象,否则不能强转

final修饰不同类型的变量时的特点?
(1)final修饰非静态成员变量:JVM不会为其默认赋值,我们需要手动在声明的同时、匿名代码块中、构造器中赋值,并且类中出现的所有构造器都要赋值。
(2)final修饰静态成员变量:JVM不会为其默认赋值,需要手动在声明的同时、静态代码块中赋值。
(3)final修饰引用类型变量:此时的final指的是,引用s的指向的对象不能改变,但是可以使用s来操作当前指向的对象属性和方法。

(静态)类变量和(非静态)成员变量的区别?
(1)所属不同:静态变量属于类;非静态变量属于对象,也叫实例变量。
(2)内存中的位置不同:静态变量存储在方法的静态区;成员变量存储在堆内存。
(3)开辟内存的时间不同:静态变量随着类加载而加载;成员变量随着对象的创建而存在。
(4)调用方式不同:静态变量可以通过类名调用,也可以通过对象调用;成员变量只能通过对象名调用。
静态方法和非静态方法的区别?
抽象类和接口的区别?
定义抽象类用的关键字的abstract,定义接口用的关键字的interface
1.成员区别:
抽象类的成员变量可以是变量或常量,成员方法可以抽象,也可以非抽象;
接口的成员变量只可以公有静态常量,成员方法只可以抽象。
2.关系区别:
类与类之间的关系是单继承;类与接口之间的关系是一个类可以实现一个或多个接口;接口与接口之间可以单继承或多继承的关系。
3.设计理念区别:
抽象类被继承体现的是:is a的关系。抽象类中定义的是该继承体系的共性功能。
接口被实现体现的是:like a的关系。接口中定义的是该继承体系的扩展功能。

类中可以嵌套另一个类。类中可以嵌套接口。接口的内部也可以嵌套其他接口。
接口中嵌套接口:(1)java.util.Map接口中的内部接口Entry;(2)Stream里面嵌套一个Builder。

常见的异常有哪些?
1.常见的错误Error:
内存(堆栈)溢出
jvm错误
字节码版本错误

2.常见的编译时异常:
IO流异常IOException
类找不到异常ClassNotFoundException
数据库异常SQLExceotion
没有方法异常NoSuchMethodException
线程中断异常InterruptedException…

3.常见的运行时异常:
数组下标越界异常ArrayIndexOutOfBoundsException
算术异常ArithmeticException
类型转换异常ClassCastException
数据格式异常NumberFormatException…

值传递和引用传递的区别?
方法的传递分为值传递和引用传递:
1.值传递:实参把自己存储的值(基本类型都是简单的数字)赋值给形参,之后形参如何操作,对实参没有影响。
2.引用传递:实参将自己存储的对象地址赋值给了形参,这时候俩个引用(实参和形参)指向了同一个对象,那么任何一个引用(实参或形参)操作对象,例如给属性赋值时,另一个引用都可以看到这个对象中属性的变量,因为俩个引用指向同一个对象。

子类继承父类,在调用方法的时候,如果子类中没用重写,那么调用的是从父类继承的方法,如果子类重写了这个方法,那么将会调用到子类中重写后的方法。

代码块有哪几种?
1.静态代码块:在类中方法外出现,构造代码块基础上加static,用于给类进行初始化,在加载的时候执行,只执行一次。
2.构造代码块(匿名代码块,初始化代码块):在类中方法外,多个构造方法中相同的代码存放到一起,每次调用构造器前都会执行。
3.局部代码块:在方法中出现,用于限定变量的生命周期,及早释放,提高内存利用率。

内部类有哪几种?
内部类是指在在一个类的内部再定义另外一个类。内部类有四种:成员内部类;静态内部类;局部内部类;匿名内部类。

什么时候用什么内部类?
1.考虑这个内部类,如果需要反复的进行多次使用(必须有名字)
1)在这个内部类中,如果需要定义静态的属性和方法,选择使用静态内部类;
2)在这个内部类中,如果需要访问外部类的非静态属性和方法,选择使用成员内部类。
2.考虑这个内部类,如果只需要使用一次(可以没有名字):选择使用匿名内部类。
3.局部内部类,几乎不会使用。

为什么this和super不能在static方法中出现?
被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。而this代表对本类对象的引用,指向本类对象;而super代表对父类对象的引用,指向父类对象。

说说字符串对象?
说说你的项目?
说说你在项目中遇到的问题?
说说你的登录注册功能?
怎么把项目部署到云服务器?
项目部署在tomcat服务器哪个目录下?
说说你了解的数据结构?
后序遍历的原理?
HTTP采用的传输层协议是什么
超文本的核心是什么?
数学期望怎么计算?

算法题
1.自然数N,统计小于等于N的所有自然数中数字1出现的个数?

2.输入一个非负整数n,求n的阶乘?

3.24点游戏:1-13个数中,有放回的取出抽取4个数字,判断4个数是否可以通过运用+-×÷得到24?

先做个自我介绍吧
你认为你的优势是什么?
你的职业规划是怎样的?
你认为项目小组长要具有哪些特点?
积极主动性,要能主动发现问题,跟进问题。
区分主次、合理规划,要能合理的安排组员的工作。
善于沟通,有一定组织协调能力,有一定的信服力,能让组员服从安排。
要有责任心,自己写好的代码要进行充分的测试,也要对组员负责,做好一个合格的管理人员。

持续更新…



这篇关于Java开发面试总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程