标签:lse .com family 转化 time 世界 项目 jdom throw
基础部分part1
【1】Java基本类型
解:基本数据类型:byte short int long float double chat boolean
Java基本数据类型在内存中的存储
1)基本数据类型的存储原理:所有简单的数据类型不存在"引用"的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面的。
2)引用数据类型的存储原理:引用类型继承于Object类(也是引用型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈这种类型的数据存储。“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;
区别:基本数据类型和引用数据类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的;
//== equals() 操作符 方法
public class Test
{
public static void main(String[] args)
{
//基本数据类型 比较用 == 比较的是值
String a ="abc";
String b = "abc";
System.out.println(a == b);
String s1 = "a";
String s2 = new String("a");
String s3 = new String("a");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
}
}
/*
---------- java ----------
true
false
true
true
a==b
输出完成 (耗时 0 秒) - 正常终止
*/
【3】Java反射
解答:Java反射 传递class,可以动态生成该类,取得这个类的所有信息,包括里面的属性、方法以及构造函数,甚至可以取得其父类或父接口里面的内容
Java的反射机制:在运行状态,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能。
class:
1)一个描述类的类,封装了描述方法method、描述字段filed、描述构造器constructor
2)反射可以得到的信息:某个类的数据成员名、方法、构造器、实现了哪些接口
3)每个类,jre都为其保留一个不变的class类型的对象。一个class对象包含了特定某个类的有关信息。
4)class对象只能由系统建立对象
5)一个类在JVM中只会有一个class实例
【3】
【4】Java中创建对象的方法
1、通过new关键字创建对象
2、利用Java的反射机制,通过java.lang.Class或者java.lang.reflect.Constructor创建对象
3、实现Cloneable接口,重写Object.clone()方法创建对象
4、实现序列化serialiable接口,通过反序列化,ObjectInputStream的readObject()方法创建对象
5、String str="abc"直接由jvm创建 或者 使用字符串操作符“+” String str1 = "a" + "bc"由jvm创建
【5】java为什么能够跨平台运行
【6】整型数据转化为字符串的方式
1、直接在数字后面加 空格
2、使用String.valueOf(int i )
3、Integer.toString(i);
【7】String是基本数据类型吗?能不能写个类继承String
String是应用能够类型;String是final的类,是不可以被继承的。
【8】& &&的区别
【9】switch语句中的条件
【10】short s1=1;s1=s1+1; 错误?short s1=1;s1+=1; 错误?
【11】char为什么能存储一个汉字
char型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包含了全世界所有的字体
【12】用最有效率的办法算出2乘以8等于几?
2<<3 位移运算是最底层的运算,它直接操作的是二进制,故效率很快
【13】final修饰变量时,该变量是对象时,对象的值可不可以改变?
final修饰的变量指的是引用不可变,对象的值是可以改变的。
【14】静态变量和实例变量的区别?
静态变量也称为类变量,归全类所有,它不依赖某个对象,可通过类名直接访问;而实例对象必须依存于某一实例,只能通过对象才能访问它
【15】面对对象的基本特征?
1、继承
2、封装
3、多态性
4、抽象
【16】作用域public private protected 以及不写时的区别
【17】overload 和 override的区别
overload(重载):发生在同一个类中,方法名相同,参数列表不同,与返回值无关,与final无关,与修饰符无关、与异常无关
override(重写):发生在子类和父类之间,方法名相同、参数列表相同、返回值相同、不能是final的方法、重写的方法不能有比父类方法更为严格的修饰符权限、重写的方法所抛出的异常不能比父类的更大
如果父类私有的方法,子类拥有方法签名相同的方法,子类不属于重写父类的方法,该方法属于子类的新方法
【18】构造器可不不可以被重载或者重写
构造器不能被继承,故不能被重写、但可以被重载
【19】Java有没有多继承
java中没有多继承,但是可以多实现,即一个类实现多个接口。
虽然没有多继承,但是java中接口可以近似的实现多继承,那就是接口;
接口和接口之间可以进行多继承
【20】抽象类和接口的区别
1、抽象类继承与object接口不继承object
2、抽象类有构造器,接口中没有构造器
3、抽象类中可以有普通成员变量和常量,接口中只能有常量,而且只能是public static final不写默认
4、抽象类中可以有抽象方法,也可以有普通方法,接口中只能有抽象的方法,而且修饰符只能是public abstract 不写默认
5、抽象类中可以有final的方法,接口中不能有final的方法
6、抽象类只能是单继承、多时相;接口是可以多继承其他接口,但是不能实现接口和不能继承其他类
7、抽象类中可以有静态的方法,接口中不可以
【21】java中实现多态的机制是什么
重写、重载、父类的声明指向子类的对象
【22】int integer的区别
int是java的接班数据类型
integer是基本类型包装类。
初始化值:int:0 integer : null
其中integer提供了一些对整数操作的方法,定义了integer型数值的最值,其他基本类型也有对应的包装类,基本类型包装类的出现,是的java完全面对对象
【23】String和StringBuffer的区别?StringBuffer和StringBuilder区别?
String是不可变的,对String类的任何改变都会返回一个新的String的对象。
StringBuffer是可变的,对StringBuffer中的内容修改都是当前这个对象。
String重写了equals方法和hashCode方法,StringBuffer没有重写equals方法。
String是final的类。StringBuffer不是。
String创建的字符串是在常量池中,创建的变量初始化一次,如果再对该字符串改变会产生新的字符串地址值,StringBuffer是在堆中创建对象,当对字符串改变时不会产生新的字符串地址值,如果对字符串进行频繁修改的话建议使用StringBuffer,以节省内存。
StringBuffer和StringBuilder,StringBuffer是线程安全的,StringBuilder是线程不安全的。当不考虑并发问题时候,用StringBuilder。
【24】String s = new String("xyz"); 创建了几个String Object?
两个对象,一个是“xyz” 一个是指向“xyz”的引用对象
【25】数组中有没有length()方法,String中有没有length方法?
数组中没有length()方法,但是有length属性,String中有length方法
【27】final finally finalize
final 用于声明属性、方法和类;分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行
finalize 是object类的一个方法,在垃圾收集器执行的时候回调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。jvm不保证此方法总被调用
【28】== 和 equals()区别
== 比较的是两个变量的内容和在内存中的地址值是否相同;如果比较两个基本数据类型必须用“==”
equals()如果没有重写,和==意义一样,但是如果重写了,则会按照重写的内容进行比较,javaBean规定当重写equals时候必须重写hashcode,如果不重写会出现对象相同但是hashCode不同,这样会出现问题。
hashSet存储元素时候按照hashCode,如果重写equals不重写hashCode会导致同一个对象,存储了两次。
【29】error 和 exception的区别
error表示恢复不是不可能但是很困难的情况下的一种严重问题,例如程序书写错误、虚拟机错误等。
exception是一种设计和实现问题,如果程序运行正常,从不会发生的问题
error是可以避免的,但是exception是不可以避免的
【30】java的checked和unchecked异常
1、unchecked异常即运行时异常。即runtimeexception,不需要try catch throws机制去处理的异常
2、除了runtimeexception,其他继承自java.lang.exception的异常统称为checked exception。
【31】
数据库部分part2
【1】触发器
触发器是一种特殊的存储过程,主要是通过事件而触发并被执行的,它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如某表上的触发器上包含对另一张表的数据操作。而该操作又会导致该表触发器被触发。
【2】存储过程
存储过程是一个预编译的sql语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次sql,使用存储过程就比单纯sql语句执行要快。可以用一个命令对象来调用存储过程。
【3】删除表的方法
delete truncate drop
drop是删除表,使用drop之后表的结构和表的数据都会被删除,truncate和delete是删除表中的数据,但不删除表本省,truncate和delete相比,truncate要快很多,但是缺点是无法回滚,包括索引等都会被成初始值,数据就无法恢复。
【4】索引
索引就是一种特殊的查询表,书户口的搜索引擎可以利用他加速对数据的检索。它很类似现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
【5】事务?锁?
事务处理:数据的操作是一个整体,可以理解为一个完整的业务,如果其中出错,则所有的操作都应该不再执行,而且回归到最原始的状态,而这一个操作流程就是 事务的操作。所有的事物操作都针对每一个session进行的,每一个链接到数据库的用户都成为一个session,每一个session之间彼此独立,不会有任何的通讯,而每一个session独享自己的事务控制,而事务控制之中有两个命令:rollback和commit。
问题出现死锁:例如某一个session在更新数据时还没有提交事务,其他session是无法更新的,必须等待之前的session提交后才可以。
解释:
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就会被失败,以后的操作就会回滚到操作之前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性、一致性、隔离性和持久性。
锁:
在所有的DBMS中,锁是实现事务的关键。锁可以保证事务的完整性和并发性。与现实生活中的锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构,锁还分级别。
【6】视图?游标?
视图是一种虚拟的表,具有和物理表相同得功能,可以对视图进行增、改、查操作,视图通常是有一个表或者多个表的行或列的自己。对视图的修改不影响基本表。使得或者数据更容易,相比多表查询。
游标:游动的光标。游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中任意一行数据了,将游标放置到某行后,即可对该行数据进行操作。例如:提取当前行的数据。
游标是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中额特定行,从结果集的当前行检索一行或多行,可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
【7】表连接方式?
内连接:只有两个元素表相匹配的才能在结果集中显示
自连接:自己跟自己关联查询,数据表使用不同的别名。
外连接:
-
左外连接 左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。
-
右外连接:右边为驱动表,驱动表的数据全部显示,匹配日表不匹配的不会显示。
-
全外连接:连接的表中不匹配的数据全部都会显示出来。
交叉连接:笛卡尔效应,显示的结果是链接表数的乘积。
【8】主键?外键?
主键是本表中是惟一的,不可唯空的,外键可以重复可以唯空;
外键和另一张表的主键关联,不能创建对应表中不存储的外键。
【9】在数据库中查询语句速度很慢,如何优化?
解答:
1、建索引
2、减少表之间的关联
3、优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,吧数据量大的表排在前面。
4、简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据。
5、尽量用preparedStatement来查询,不要用Statement
【10】数据库三范式
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
【11】union 和 union all有什么不同?
union在进行表链接后 会筛选掉重复的记录,所以在表链接后对所产生的结果集进行排序运算。删除重复的记录再返回结果。实际大部分时不会产生重复的记录,最常见的是过程表和历史表union
union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,union all要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all
【12】用JDBC如何调用存储过程
package com.wyp.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class JdbcTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
Connection cn = null;
CallableStatement cstmt = null;
try {
//这里最好不要这么干,因为驱动名写死在程序中了
Class.forName("com.mysql.jdbc.Driver");
//实际项目中 应用DataSource数据 ,如果用框架 这个数据源不需要要编码创建,只需
//DataSource ds = context.loopup() cn = ds.getConnection();
cn = DriverManager.getConnection("jdbc:mysql:///test", "root", "");
cstmt = cn.prepareCall("{call insert_Student(?,?,?)}");
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.setString(1, "wu");
cstmt.setInt(2, 25);
cstmt.execute();
//get第几个 不同数据库不一样,建议不写
System.out.println(cstmt.getString(3));
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(cstmt != null)
cstmt.close();
if(cn != null)
cn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
【13】JDBC中的PreparedStatement相比Statement的好处
1、提高性能
2、防止sql注入
【14】什么是防止sql注入
【15】JDBC连接数据库
【20】Oracle 和 MySQL的区别
1、库函数不同
2、Oracle是用表空间来管理的,MySQL不是
3、显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同。
4、分页查询,MySQL 用limit oracle用rownum
5、sql的语法的不同
【21】varchar2 、 varchar 和 char区别
1、char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”,对于char(20)表示存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节,20 只是最大值,当你存储的字符小于20时,按实际长度存储
2、char的效率要被varchar2的效率高
3、目前varchar是varchar2的同义词。工业标准呢的varchar类型可以存储空字符串,但是Oracle不能这样做,尽管它保留了以后这样子做的权利。Oraclei自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特定改为存储null值,如果想有向后兼容的能力,Oracle建议使用varchar2而不是varchar。
【22】Statement和preparedstatement有什么区别?
后者的效率比前者高,在使用preparedstatement对象执行sql时候,命令被数据库编译和解析,然后被放到命令缓冲区,然后每当执行同一个preparedstatement时候,他就被再解析一次,但不会被编译,在缓冲区可以发现预编译的命令,而且可以重新使用。
如果要写insert update delete 最好使用preparedstatement,在有大量用户的企业级应用软件中,经常会执行相同的sql,使用preparedstatement会增加整体的性能。
xml部分part3
【1】解析技术
1、DOM:处理大型文件时其性能下降的非常厉害
2、SAX
3、DOM4J
4、JDOM
【2】xml技术的运用
【3】编程:用java解析xml方式
【4】xml的文档定义
【5】xml和 html的区别
【6】xml文件和普通文件的区别
【7】JSON
JSON(javascript object notation)是一种轻量级的数据交换格式,主要用于传送数据。
JSON可以将JavaScript对象中表示的一组数据转换为字符串,
Java
标签:lse .com family 转化 time 世界 项目 jdom throw
原文地址:https://www.cnblogs.com/wuyuwuyueping/p/9125620.html