1.面向对象的特征有哪几方面?
答:面向对象的特征有:
1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面
2)继承:继承是从已有类中继承信息创建新类的过程。父子类
3)多态性:多态性指不同的子类型对同一消息作出的不同相应
4)封装:封装是将数据和操作数据的方法捆绑起来,操作数据只能调用已定义好的接口
2.重载(overload)与重写(override)的区别
都是实现多态性的方式
重载:方法名相同,参数不同,编译时多态性
重写:方法名相同,参数相同,父子类中,覆盖父类方法,运行时多抬
3.int和Integer的区别
int是基本数据类型,Integer是int的包装类型
4.&和&&的区别
&位运算符,逻辑与,&&是短路与,都要求两侧布尔类型为true才能运行,但是&&前面为false,不再执行后面
5.数组有没有length()方法?String有没有length()方法?(笔试基础题)
数组有length属性没有length()方法,数组的长度,String有length()方法,表示字符串长度
6.构造器(constructor)可否背重写(override)?
不能,但是可以背重载
7.是否可以继承String类?
不能,String是final修饰类,值无法改变,不能背继承
8.String ,StringBuffer和StringBuild的区别?
Sting值不可变,StringBuffer和StringBuild可以改变
StringBuild非同步,效率快
StringBuffer同步,线程安全
9.char是否可以存储一个汉字
可以,char可以存储16个字节,汉子占8个字节
10.抽象类(abstract class)和接口(interface)的区别?
都不可以被实例化,但可以定义引用,继承接口或抽象类需要实现全部方法,不然必须声明为抽象类,
接口成员必须是public声明,,抽象类可以是public、protect、private、默认的,
抽象类的成员可以定义成员变量,接口的成员定义的成员变量都是常量
11.静态嵌套类(Static Nested class)和内部类(inner class)的区别?
Static Nested class 是被声明为静态的内部类,不需要外部实例化
内部类是需要在外部类实例化之后才能实例化
12.java 中final的作用
修饰类:不可被继承
修饰方法:不可被重写
修饰变量:变量为常量,不可以被修改
13.JDBC操作数据库
1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
创建连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
创建语句
PreparedStatement ps = con.prepareStatement("select * from emp where sal between ? and ?");
ps.setInt(1, 1000);
ps.setInt(2, 3000);
执行语句
ResultSet rs = ps.executeQuery();
处理结果
while(rs.next()) {
System.out.println(rs.getInt("empno") + " --- " + rs.getString("ename"));
}
关闭资源
finally {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
14.hibernate与mybatis的区别?
Hibernate与mybatis相比较,mybatis更为轻便、灵活,容易掌握。mybatis可以把sql语句从Java代码中分离了出来,放在了配置文件中书写,大大降低里java代码与SQL语句的耦合度,更容易对sql语句操作,重要的是mybatis还可以书写动态的sql语句,但mybatis也存在一些缺陷,比如mybatis本身的缓存机制没有hibernate那么完善,hibernate除了本身有良好的缓存机制,还可以使用第三方缓存。Hibernate较完整的封装了JDBC,Hibernate的DAO层开发比MyBatis简单,对对象的维护和缓存要比MyBatis好。
15.springmvc与Struts的区别
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。
struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,这也就无法用注解或其他方式标识其所属方法了