赞
踩
1.string类的常用方法有哪些?
2.String,StringBuffer,StringBuilder的区别。
String 字符串常量 线程安全 操作少量数据
StringBuffer 字符串变量 线程安全 操作大量数据 速度慢 多线程适合用
StringBuilder 字符串变量 线程不安全 操作大量数据 速度快 单线程适合用
3.String str = new String(“xyz”);创建了几个对象。
如果String常量池中,已经创建了"xyz",则不会继续创建,此时直创建了一个对象new String("xyz");
如果String常量池中没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象是new String("xyz");
4.说几个你常见到的异常。
Throwable是所有异常的根,java.lang.Throwable
Error是错误,java.lang.Error
Exception是异常,java.lang.Exception
一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。
NullPointerException 空指针异常
ArithmeticException 除0异常
ClassCastException 类型转换
ArrayIndexOutOfBoundsException 数组越界异常
5.hashtable和hashmap的区别是什么?
6.hashmap的底层实现方式是什么?
HashMap是一个“链表的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链表的结合体。
7.Vector 和 ArrayList 的区别?
Vector是线程安全的,运行速度较ArrayList慢
ArrayList线程不安全,运行速度快
相同点:都是顺序存储,底层数组实现。
8.怎么遍历一个map?
遍历map的三种方法:
public class Collection_Map {
public static void main(String[] args) {
Map<String, Student> hm = new HashMap<String,Student>();
Student stu1 = new Student(1,"MapTom");
Student stu2 = new Student(2,"MapJack");
Student stu3 = new Student(3,"MapKoby");
hm.put("1", stu1);
hm.put("2", stu2);
hm.put("3", stu3);
/*第一种 先将map对象转成set,然后再转为迭代器*/
Iterator<Entry<String, Student>> it = hm.entrySet().iterator();
while (it.hasNext()) {
//System.out.println(it.next().getKey());
System.out.println(it.next().getValue().getName());
}
/*第二种 先将map转为set类型的key值集合,然后转为迭代器*/
Iterator<String> it2 = hm.keySet().iterator();
while(it2.hasNext()){
/* System.out.println(it2.next());*/
System.out.println(hm.get(it2.next()).getName());
}
/*第三种*/
for(Map.Entry<String, Student> entry : hm.entrySet()){
String key = entry.getKey();
String value = entry.getValue().getName();
System.out.println(value);
}
/*第四种*/
for(String key : hm.keySet()){
System.out.println(hm.get(key).getName());
}
}
}
9.说一下list,set,map的区别。
List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的 HashCode决定的,其位置其实是固定的) List接口有三个实现类:LinkedList,ArrayList,Vector LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的 地址。链表增删快,查找慢 ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) Query接口有一个实现类:LinkList Map接口有三个实现类:HashMap,HashTable,LinkeHashMap HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null SortedMap有一个实现类:TreeMap 其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对 set 一般无序不重复.map kv 结构 list 有序
10.你的项目中用的是多线程还是单线程?
一般是多线程,不清楚了,根据特定情况用吗?等查清楚再说!
11.多线程会遇到那些问题?怎么解决死锁?
并发,死锁
可以通过加同步、上锁解决死锁问题。
12.用java写一个多线程程序,如写四个线程,二个加1,二个对一变量减一,输出:
java
package test;
/**
* 加一线程与减一线程共同操作一个数
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
* @author liuwei
*/
public class TMain {
int j=1;
public synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
class T1 implements Runnable{
public void run(){
inc();
}
}
public synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class T11 implements Runnable{
public void run(){
dec();
}
}
public static void main(String[] args) {
TMain t = new TMain();
T1 t1 =t.new T1();
T11 t11 =t.new T11();
for(int i=0;i<20;i++){
Thread thread=new Thread(t1);
thread.start();
Thread thread1=new Thread(t11);
thread1.start();
}
}
}
13.至少说六点interface和abstract的区别。
1.相同点 A. 两者都是抽象类,都不能实例化。 B. interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。 2. 不同点 A. interface需要实现,要用implements,而abstract class需要继承,要用extends。 B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。 C. interface强调特定功能的实现,而abstractclass强调所属关系。 D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。 interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实 现。而abstractclass的子类可以有选择地实现。 这个选择有两点含义: 一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类 必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。 二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法, 可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须 也声明为抽象类。既是抽象类,当然也不能实例化。 E. abstract class是interface与Class的中介。 interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方 法,不能定义方法体,也不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找 出这种例子。但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与 类的不同价值。如果的确需要,可以将其放在相应的abstractclass或Class中。 abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明 抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆 盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。 3. interface的应用场合 A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。 B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。 C. 需要将一组类视为单一的
14.怎么把数组放到对象里面?
java
String[] dataArray = new String[]{"123","234","345"};
List<String> dataList = new ArrayList<String>();
for(String s : dataArray){
dataList.add(s);
}
15.给你一组字符串如:7i8hy4jjnb2.让你编程输出里面的数字:7842.
java
String str = "7i8hy4jjnb2";
char[] ch = str.toCharArray();
int bytes = ch.length;
for(int i=bytes;i--;){
if(ch[i]>255){
bytes++;
System.out.println(ch[i]);
}
}
16.多线程有几种实现方式?都是什么?同步有几种实现方式?都是什么?
**多线程实现方式:**
1.extends Thread 类
2.implements Runnable 接口
**同步实现两种方式:**
1.在返回类型上加 synchronized
2.使用wait() 和 notify()
17.java类实现序列化有几种实现方式?都是什么?(二种)
实现接口Serializable
实现接口Externalizable
18.java开发中“==” 和 “equals” 有何区别?
equals()是个方法,继承类Object
== 是个运算符,表示内存地址是否相同
==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
19.static局部变量与全局变量的区别,编译后映射文件是否包含此类变量的地址。
static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝;
20.在日常工作中,使用过哪些 java core 包,遇到java core 的那些异常?(可以写中文)
不知道
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。