[Java笔试问题]字号:大 中 小 一、Ja基础方面 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public protected friendly...+阅读
JAVA关于数组的简单问题
在java中有数组和集合框架的说法。 在你的代码中int[]是个数组,而这样的数组和我们在C中书写的数组是一个道理,是无法动态的改变大小的。你提到的realloc不是数组那么简单的,准确地说是一种的数据结构“链表”,和“图”、“树”一样的概念--“表”。 要想达到你要的那样的效果,建议使用集合框架(collection),其中常使用的有:ArrayList、Vector、LinkedList,当然还有好多。他们都是可以自动增长的(即是:你可以随时地添加/删除其中的数据,同时不用手动去作增长/缩短这样的工作,想想,在C中,使用链表时,我们需要自己手动书写插入/删除的方法)。 记得导包:import java.util.*
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, ...
C实习生面试一般会问到关于STL的什么知识点
1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-BlackTree)。RB树的统计性能要好于一般的 平衡二叉树3.STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: map: type pair,很多不同的 const Key 对应的 T 对象的一个集合,所有的记录集中只要 const Key 不一样就可以, T 无关! set: type const Key. 只存单一的对 const Key ,没有 map 的 T 对像!可以看成 map 的一个特例
(1)为何map和set的插入删除效率比用其他序列容器高?,树答:因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。map和set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点
(2)为何每次insert之后,以前保存的iterator不会失效?答:iterator这里就相当于指向节点的指针,内存没有变,指向内存的指针怎么会失效呢(当然被删除的那个元素本身已经失效了)。相对于vector来说,每一次删除和插入,指针都有可能失效,调用push_back在尾部插入也是如此。因为为了保证内部数据的连续存放,iterator指向的那块内存在删除和插入过程中可能已经被其他内存覆盖或者内存已经被释放了。即使时push_back的时候,容器内部空间可能不够,需要一块新的更大的内存,只有把以前的内存释放,申请新的更大的内存,复制已有的数据元素到新的内存,最后把需要插入的元素放到最后,那么以前的内存指针自然就不可用了。特别时在和find等算法在一起使用的时候,牢记这个原则:不要使用过期的iterator。(3)为何map和set不能像vector一样有个reserve函数来预分配数据?答:我以前也这么问,究其原理来说时,引起它的原因在于在map和set内部存储的已经不是元素本身了,而是包含元素的节点。也就是说map内部使用的Alloc并不是map声明的时候从参数中传入的Alloc。例如:4.set, multiset set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复。因为是排序的,所以set中的元素不能被修改,只能删除后再添加。 向set中添加的元素类型必须重载
延伸阅读:
java面试问题及答案导语:面试程序员时经常被问的问题及答案,欢迎阅读,祝您面试顺利!【问题及答案】第一,谈谈final, finally, finalize的区别。final修饰符(关键字)如果一个类被声明为final,意味着...
java面试问题JAVA常见面试题1)transient和volatile是ja关键字吗?(瞬联)如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:class T{transient int a; 不需要维持int b;...
java程序员面试的问题技术方面的问题你可以加入:64508203。Java技术交流群,至于人事方面的问题,我遇到过的给你列举一下你看看能不能帮到你吧: 1、请简单做一下自我介绍。 2、描述一下你在xx的实习经...
Java线程面试有哪些问题我就抛砖引玉的提出两个问题,让我们去思考一下。 1)现在有T 1、T 2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段...
笔试WEB前端问题:有1到1000的数现在打乱放到一个数组中var array =[7,62,34,1,88,576,984,32,'...']; function findIndex(num,arr){ var s=''; for(var i in arr){ if(arr[i]==num) s+=arr[i]+' 的索引为:'+i+' '; } if(s=='')+n...
java三大框架问题Springdefault-autowire="byName"//spring容器首先选择按照bean的名字对相关字段进行注入。 default-lazy-init="false"//spring 负责创建的bean是容器一启动就统统给创建好呢?还是调用...
笔试WEB前端问题有1到1000的数现在打乱放到一个数组中var array =[7,62,34,1,88,576,984,32,'...']; function findIndex(num,arr){ var s=''; for(var i in arr){ if(arr[i]==num) s+=arr[i]+' 的索引为:'+i+' '; } if(s=='')+n...
java初级问题你定义函数的时候,返回值是boolean 调用的时候用int的貌似有错误 public class Function { public static boolean runnian(int year) { boolean b = false; if ((year % 400...
Java Web的一些面试问题求解答Java Web的一些面试问题求解答,救命啊!mybatis整合问题:1、一般封闭到框架中,自动提交false——调用action(数据库操作)——提交事务—关闭connection 2、重载:方法名相同,参数(个数...