1,多态的特征?
多态是某一个事物,在不同时刻表现出来的不同状态,多态性语言具有灵活,抽象,行为共享,代码共享的优势。
2,&和&&的区别?
&是位运算符,表示按位运算,&&是逻辑运算符,表示逻辑与(and)
3,构造器是否可被重写
构造器不能被继承,因此不能被重写,但可以被重载
4,String ,StringBuffer和StringBuilder的区别
String的长度是不可变的;
StringBuffer的长度是可变的,线程安全
SrtringBuilder,线程不安全,但效率高
5.重写和重载的区别
方法重写和重载是java多态的不同表现,
重写是父类与子类多态性的一种表现
重载是一个类中多态性的一种表现。
6.抽象类和接口的区别?
成员区别:
抽象类:可以有变量,常量,普通方法,抽象方法
接口:常量,抽象方法
- 设计理念区别
- 抽象类 被继承体现的是:”is a”的关系。共性功能 是一个
- 接口 被实现体现的是:”like a”的关系。扩展功能 像一个
7.java中一个类被声明为final类型,表示了什么意思
表示该类不能被继承,是顶级类
8.String类中有那些常见方法(最少能说处六个,必须掌握)
int hashCode():返回此字符串的哈希码。
boolean equals(Object anObject)将此字符串与指定的对象比较
比较的是重写后的串的具体内容
String toString():返回此对象本身;
int length():返回此字符串的长度;
String toUpperCase()所有字符串都转换成大写
String toLowerCase()所有字符串都转换成小写
boolean startsWith(String s)测试此字符串是否以指定元素开头
boolean endsWith(String s)测试此字符串是否以指定元素结束
char charAt(int index)返回指定索引/下标处的char值
int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。
String concat(String str) 将指定字符串连接/拼接到此字符串的结尾,注意:不会改变原串
String[] split(String regex) 根据给定元素来分隔此字符串
String trim() 返回去除首尾空格的字符串
byte[] getBytes() 把字符串存储到一个新的 byte 数组中
String substring(int beginIndex) 返回一个新子串,从指定下标处开始,包含指定下标
String substring(int beginIndex, int endIndex) 返回一个新子串,从执定下标开始,到 结束 下标为止,但不包含结束下标
9.java八种基本数据类型(全部要会必须掌握)
类型 字节空间 取值范围
byte 1 -2^7~2^7-1
short 2 -2^15~2^15-1
int 4 -2^31~2^31-1
long 8 -2^63~2^63-1
float 4 单精度
doublie 8 双精度
char 2 0~65535
boolean 1 true和false
10.说IO的流有哪些?
字节输入流:InputStream--抽象父类-不能实例化
FileInputStream--文件字节输入流,构造函数的参数:File、String
BuffereInputStream--高效字节输入流
字节输出流:OutputStream--抽象父类,不能实例化
FileOutputStream--文件字节输出流
BufferedOutputStream--高校字节输出流
字符输入流:Reader --抽象类--不能实例化
FileReader--文件字节输入流
BufferedRrader--高校字节输入流
字符输出流:Writer
字符输出流:Writer--抽象弗列不能实例化
FileWriter
BufferedWriter
11.Arraylist和linkedlist的区别?
Arraylist底层结构:数组,内存空间是连续的,增删操作比较慢,查询操作比较块(建立在数据量大时),元素有下标
linkedlist底层结构:链表,内存空间是不连续的,效率高,增删操作比较快,查询操作比较慢(数据量大时),元素有下标;
12,什么是进程?什么是程序?有什么区别
程序:数据与指令的集合,程序是静态的
进程:给程序加入了时间的概念,不同的时间进程有不同的状态
进程是动态的,就代表OS正在运行的程序
独立性,动态性,并发性
13,什么是并行?什么是并发?
CPU:电脑的核心处理器,类似于“大脑”
并行:相对于来说资源比较充足,多个CPU可以同时处理不同的进程
并发:相对于来说资源比较紧缺,多个进程同时抢占公共资源,比如CPU
14,方案二实现Runnable的好处
耦合性不强,没有继承,后续仍可以继承
15.单例设计模式之懒汉式--面试重点,要求重点掌握
懒汉式:先不给你创建这个类,二十等你需要的时候再帮你创建--利用了延迟加载的思想
16.要求熟练掌握SQL命令,见第十五天,记得每天敲一遍
17.事物的4个特性及隔离的级别(重点是它的四个隔离级别)
原子性:多个操作是绑定到一起的,要么全成功,要么全失败
一致性:在多个系统中保证数据是一致的
隔离性:在保证了性能的同时隔离用户的操作
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
隔离级别
读未提交:效率高,安全性差
读以提交:牺牲了效率,提高了安全-Oracle数据的默认隔离级别
可重复读:MySQL默认的隔离级别,安全性高,性能一般
串行化:表级锁,读写都加锁,效率低下,安全性高,不能并发
18.索引中如何观察SQL的性能/执行计划
explain select * from dept emp where depton=‘java’;
熟练掌握对索引的操作
19.Sql优化(重点)(至少掌握六个)
1,查询SQL尽量不要使用select*,而是具体的字段
2,避免在where子句中使用or来连接条件
3,使用varchar代替char
4,尽量使用数值替代字符串类型
5,查询尽量返回大量数据
6,索引不宜太多,一般5个以内
7,避免在where中对字段进行表达式操作
8,避免在where字句中使用!=或<>操作符
9,去重distinct过滤字段要少
20.什么是SQL攻击及解决方案(面试常问)
SQL攻击:出现了特殊的字符#,改变SQL语义,本质上是因为用了Statement传输器
解决方案:利用全新的传输方式PreparedStatement,把SQL骨架和SQL的参数分开执行,遇到#只是当作普通的文本而不是注释 优点:省去了拼接SQL语句的麻烦,防止了SQL攻击,高效;