[求职面试最忌提的几个问题集合]一、忌问招聘人数 最明显的就是问你们要几个?对用人单位来讲,招一个是招,招十个也是招。问题不在于招几个,而是你有没有这百分之一或十分之一或独一无二的实力和竞争力。你们要...+阅读
java集合类问题
因为你用的方法Collections.sort(a), 是一个比较方法, 但是因为没有比较器, 所以是用来比较基本类型集合的方法, 比如数字型或者字符串型, 这个方法的声明:
public static
由于Object是所有类的父类, 所以它不可能符合比较的要(是数字或者字符串), 所以会报错, 告诉你期望的参数和实际的不符.
换成下面那句之后, 会报不安全的警告, 因为你所定义的泛型, 这个方法不一定能够按照这个反省来进行排序, 因为没有比较规则.
如果要想对Student类型的集合进行排序, 就必须有一个针对Student的比较器, 代码如下:
import java.text.Collator;
import java.util.*;
class Test
{
public static void diedai(Collection c)
{
Iterator i=c.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
public static void main(String[] args)
{
Student s1=new Student(2,"zhangsan");
Student s2=new Student(3,"lisi");
Student s3=new Student(1,"wangwu");
Student s4=new Student(2,"wusan");
ArrayList
a.add(s1);
a.add(s2);
a.add(s3);
a.add(s4);
// new Comparator
Collections.sort(a, new Comparator
public int compare(Student o1, Student o2) {
Collator c = Collator.getInstance(); // 字符串比较器, 系统自带的, 字典比较顺序
int sign = c.compare(Integer.toString(o1.num), Integer.toString(o2.num));
if (sign == 0) { // 先比较num, 相等则比较name.
return c.compare(o1.name, o2.name);
} else {
return sign;
}
}
});
diedai(a);
}
}
class Student
{
int num;
String name;
Student(int num,String name){
this.num=num;
this.name=name;
}
public String toString(){
return "num="+num+","+"name="+name;
}
}
谁能给我点java的
我公司的面试题 很流行 呵呵 基础知识:1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。 3. 垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 4. 请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放所持有的对象的lock. sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 5. 请讲一讲析构函数和虚函数的用法和作用。 6. Error与Exception有什么区别? Error表示系统级的错误和程序不必处理的异常, Exception表示需要捕捉或者需要程序进行处理的异常。 7. 在java中一个类被声明为final类型,表示了什么意思? 表示该类不能被继承,是顶级类。 8. 描述一下你最常用的编程风格。 9. heap和stack有什么区别。 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。 public class BigInt() { int[] ArrOne = new ArrOne[1000]; String intString=""; public int[] Arr(String s) { intString = s; for(int i=0;i { 11. 如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现 12,谈谈final, finally, finalize的区别。 final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 13,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 14,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 Nested Class
(一般是C++的说法),Inner Class
(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //.frontfree.net/articles/services/view.ASP?id=704&page=1 注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部...
Java面试技巧和常用问题解答
第一,谈谈final, finally, finalize的区别。 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally 是异常处理语句结构的一部分,表示总是执行。 finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 可以继承其他类或完成其他接口,在swing编程中常用此方式。 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
第四,&和&的区别。 &是位运算符,表示按位与运算,&是逻辑运算符,表示逻辑与(and)。 第五,HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 第六,Collection 和 Collections的区别。 Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 第七,什么时候用assert。 Java1.4新增关键字(语法),用于测试boolean 表达式状态,可用于调试程序。使用方法 assert ,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。
另外的使用方式assert boolean表达式,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。注意编译时要增加 -source 1.4 参数,否则报错。运行时要增加 –ea参数,否则assert行被忽略。 第八,GC是什么?为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 第九,String s = new String("xyz"); 创建了几个String Object? 2个。首先在数据段创建一个"xyz"对象,再根据该对象在堆区创建一个新的对象,在栈区创建变量s,该变量是指向堆区对象的引用。
所以一共两个String对象。 第十,Math.round(11.5)等於多少 Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加12后其floor。 第十一,short s1 = 1; s1 = s1 + 1; 有什么错?short s1 = 1; s1 += 1; 有什么错? s1 + 1运算结果是int型,需要强制转换类型。 s1 += 1; 可以正确编译。 第十二,sleep() 和 wait() 有什么区别 sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
第十三,Java有没有goto 没有 第十四,数组有没有length()这个方法 String有没有length()这个方法? 数组没有length()这个方法,有length的属性。 String有length()这个方法。 来 第十五,Overload和Override的区别。 Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象。equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 第十七,给我一个你最常见到的runtime exception。 NullPointerException或者IndexOutOfBoundsException。 (其它:ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ...
延伸阅读:
学生会面试问题经典集合学生会面试问题一般不会特别的难,主要是看你对待事物的心态,也会有几个关于学生会面试问题来问你,下面举了几个例子参考: 1 你对学生会有什么了解? 2 你为什么要进学生会? 3 你进...
学生会面试问题集合学生会面试问题一般不会特别的难,主要是看你对待事物的心态,也会有几个关于学生会面试问题来问你,下面举了几个例子参考: 1 你对学生会有什么了解? 2 你为什么要进学生会? 3 你进...
Java笔试问题字号:大 中 小 一、Ja基础方面 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public protected friendly...
Java类面试题目1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j...
java面试问题JAVA常见面试题1)transient和volatile是ja关键字吗?(瞬联)如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:class T{transient int a; 不需要维持int b;...
关于集合的问题。题目如下含有4个元素的集合, 可以构成15个等价关系. 对zhangzhuxueli的回答修改补充如下: 4个元素互不等价, 有C(0,4)=1种情形; [C(m,n)表示n中取m的组合数] 4个元素分为3个等价类 (分别...
Java集合测试题public class CharCount { /** * 计算字符串中每个字符出现的个数 * param str * return */ public static MapgetCharCountOfString(String str){ Mapmap = null; if(str =...
java初级问题你定义函数的时候,返回值是boolean 调用的时候用int的貌似有错误 public class Function { public static boolean runnian(int year) { boolean b = false; if ((year % 400...
JAVA数组集合题目组助!面试题list和vector的区别:import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class ListTest { /* 这是一个JAVA的数组集合的练习中的...