搜档网
当前位置:搜档网 › java常见面试题及回答技巧

java常见面试题及回答技巧

java常见面试题及回答技巧
java常见面试题及回答技巧

1. Java中sleep和wait的区别

①这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

②锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS 分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

Thread.sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

③使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。

synchronized(x){

x.notify()

//或者wait()

}

2. Java中HashMap和HashTable的区别

①历史原因: Hashtable是给予陈旧的Dictonary类的, HashMap是Java1.2引进的Map 接口的一个实现

② HashMap允许空的键值对, 而HashTable不允许

③ HashTable同步,而HashMap非同步,效率上比HashTable要高

3. 请简述在异常当中,throw和throws有什么区别

① throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出

② throw用在方法实现中,而throws用在方法声明中

③ throw只能用于抛出一种异常,而throws可以抛出多个异常

4. 内存溢出和内存泄露的区别

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

memory leak会最终会导致out of memory!

内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。

内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。

以发生的方式来分类,内存泄漏可以分为4类:

①常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

②偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

③一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

④隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所

有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。

5. String,StringBuffer 和 StringBuilder的区别

①可变与不可变

String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。

private final char value[];

StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。

char[] value;

②是否多线程安全

String中的对象是不可变的,也就可以理解为常量,显然线程安全。

AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

[java]view plaincopy

1.1public synchronized StringBuffer reverse() {

2.2super.reverse();

3.3return this;

4.4}

5.5

6.6public int indexOf(String str) {

7.7return indexOf(str, 0); //存

在public synchronized int indexOf(String str, int fromIndex) 方

8.8}

StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

③StringBuilder与StringBuffer共同点

StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。

抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。6. 数组和链表的区别

二者都属于一种数据结构

从逻辑结构来看:

①数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

②链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素。

从内存存储来看:

①(静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小。

②链表从堆中分配空间,自由度大但是申请管理比较麻烦。

从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反,如果需要经常插入和删除元素就需要用链表数据结构了。

7. ArrayList和LinkedList的区别

①ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

②对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

③对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

计算机面试问题

计算机面试问题 死锁问题,银行家算法, 产生原因:竞争资源,进程间的推进顺序非法必要条件:互斥,请求和保持,不剥夺,环路等待(预防死锁即是是后面三个条件之一不能成立) 处理方法:预防死锁,避免死锁,检测死锁,解除死锁(剥夺资源或者撤销进程) 银行家算法:最具代表性的避免死锁的算法,由牛人Dijkstra 提出,鉴于学过操作系统的都该懂,此处不再详述。 网络操作系统与分布式操作系统的区别, 网络操作系统是使联网的计算机能方便而有效的共享网络资源,为网络用户提供所需各种服务的软件和协议的集合。其功能主要包括高效,可靠的网络通信;对网络中的共享资源进行有效管理;提供电子邮件,文件传输,共享硬盘,打印机等服务;网络安全管理;提供互操作能力。分布式操作系统是由多个分散的计算机经网络连接而成的计算机系统,系统中的计算机无主次之分,任意两台计算机可以通过通信交换信息。为分布式计算机配置的操作系统就是“分布式操作系统”(注意:分布式操作系统是网络操作系统的更高级形式,它保持了网络系统所拥有的全部功能,同时又具有透明性,可靠性,高性能等)。它能直接对系统中的各类资源进行动态的分配和调度,任务划分,信息 1 传输协调工作,并为用户提供一个统一的界面和标准的接口,用户通过这一界面实现所需要的从操作以及使用系统资源,使系统中的若干台计算机相互协作以完成共同的任务,有效控制和协调诸任务的并行执行,并向系统提供统一的,有效的接口软件集合。网络操作系统和分布式操作系统 1 虽然都属于管理分布在不同地理位置上的操作系统,但最大的差别是:网络操作系统工作时必须确认网址,而分布式操作系统则不必知道计算机的确切地址;分

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

常见的7个面试问题及回答思路

范文最新推荐 常见的7个面试问题及回答思路 1、请你自我介绍一下? 1)这是面试的必考题目。 2)介绍内容要与个人简历相一致。 3)表述方式上尽量口语化。 4)要切中要害,不谈无关、无用的内容。 5)条理要清晰,层次要分明。 6)事先最好以文字的形式写好背熟。 2、谈谈你的家庭情况? 1)况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。 2)简单地罗列家庭人口。 3)宜强调温馨和睦的家庭氛围。 4)宜强调父母对自己教育的重视。 5)宜强调各位家庭成员的良好状况。 6)宜强调家庭成员对自己工作的支持。 7)宜强调自己对家庭的责任感。 3、请你简明地评价一下自己,你预备用哪些词形容? 大半人答出的都在3?4个词之间,同时缺少关于缺点的表述。一个 较好的回答应该在8个词左右,这些词都应是词性比较强烈的,其中 也应包括1?2个可以被称为缺点的中性词,例如完美主义,太过随和显得 1 / 5

软弱等等。 4、你认为自己最大的弱点是什么? 1)不宜说自己没缺点。 2)不宜把那些明显的优点说成缺点。 3)不宜说出严重影响所应聘工作的缺点。 4)不宜说出令人不放心、不舒服的缺点。 5)可以说出一些对于所应聘工作“无关紧要”的缺点,甚至是一些表面上看是缺点,从工作的角度看却是优点的缺点。 5、你最喜欢的大学课程是什么?为什么? 说和你要应聘的职位相关的课程吧,表现一下自己的热诚没有什么坏处。 6、你最不喜欢的大学课程是什么?为什么? “我不得不说是我们大学的主修课程,虽然我知道他们只是例行一 下公事,但课堂上死气沉沉,老师和学生都只不过想熬完这个学期”。 7、成绩单中你这门功课好像学得不太好,为什么? 大半人会回答说那门功课太难了,或者那门课的老师很糟糕。不知道对方其实是在考验你面对问题时所表现出的态度:是从自身查找原因还是喜欢推卸责任?较好的回答是:“我这门功课成绩不是太好,但我相信这不会成为我拥有这份工作的障碍。” 面试中,考官问你三围,你说不说?考官问你妈 范文最新推荐 妈和女友同时掉入水中你先救谁,你怎么答?来自香港的沟通专家近日给在汉大学生传授了一些好玩又实用的求职经。

Java面试题带答案

J a v a面试题带答案 Document number:BGCG-0857-BTDO-0089-2022

湖南世杰Java工程师面试题 选择题: 单选题 1,以下java程序代码,执行后的结果是( ) map= ("name",null); ("name","Jack"); 0 B: null C: 1 D: 2 答案:C 2,执行以下程序后的输出结果是( ) Public class Test { Public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operator(a, b);

+","+ b); } Public static void operator(StringBuffer x, StringBuffer y) { (y); y = x; } } A: A,A B: A,B C: B,B D: AB,B 答案:D 3,关于依赖注入,下列选项中说法错误的是( ) A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B:依赖注入使组件之间相互依赖,相互制约 C:依赖注入提供使用接口编程 D:依赖注入指对象在使用时动态注入 答案:B

4,关于spring说法错误的是( ) A: spring是一个轻量级JAVA EE的框架集合 B: spring是“依赖注入”模式的实现 C: 使用spring可以实现声明事务 D: spring提供了AOP方式的日志系统 答案:D 5,要在session对象中保存属性,可以使用以下哪个语句( ) A: (“key”,”value”) B: (“key”,”value”) C: (“key”) D: (“key”) 答案:B 6,关于以下程序代码的说明正确的是( ) Public class HasStatic{ Private static int x = 100; Public static void main(String args[]){

计算机基础知识面试题库

对于项目 1. 明确你的项目到底是做什么的,有哪些功能 2. 明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用 3. 明确你的模块在整个项目中所处的位置及作用 4. 明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术 操作系统 1.操作系统的四大特性: a)并发性 b)共享性 c)虚拟性 d)不确定性 2.请叙述一下并发和并行两个概念的区别? a)并行是指两个或多个事件在同一时刻发生,并发是指两个或多个事件在同一时间 间隔内发生。 3.什么是进程?什么是线程? a)“进程是一个可并发执行的,具有独立功能的程序关于某个数据集合的一次执行过 程,也是操作系统进行资源分配和调度的独立单位”。进程是资源分配的基本单 位。 b)线程也称为轻量级进程(LWP),是程序执行流量的最小单位,它是进程的一个实 体,是系统独立调度和分派处理机的基本单位。线程是操作系统调度的最小单 位。 4.进程和线程的区别?从调度、并发性、拥有资源和系统开销四个方面来比较: a)调度。在引入线程的操作系统中,把线程作为调度和分派CPU的基本单位,把进 程作为资源分配的基本单位,显著提高了并发程度。由于系统调度的基本单位是 线程,所以每个进程至少创建一个线程,否则无法被调度。 b)并发性。多线程可以提高服务的质量,在一个线程阻塞时,还有其他线程提供服 务。

c)拥有资源。进程是拥有资源的独立单位,线程自己不拥有系统资源,而是共享进 程的资源(包括代码段、数据段即系统资源等)。 d)系统开销。进程切换的开销远远大于线程切换的开销,进程的切换需要保存很多 现场,但线程只需要保存和设置少量的寄存器内容,不涉及存储器管理方面的操 作。 5.进程的特征: a)动态性:进程是动态产生和动态消亡的,有其生存周期。 b)并发性:一个进程可以与其他进程一起向前推进。 c)独立性:一个进程是一个相对完整的调度单位。 d)异步性:每个进程都已相对独立、不可预知的速度向前推进。 e)结构性:为了控制和管理进程,系统为每个进程设立一个进程控制块(PCB)。 6.进程有几种状态? a)就绪状态 b)运行状态:单CPU环境下,系统处于运行状态的进程最多只有一个。 c)阻塞状态 7.进程的组成: a)程序: b)数据集合:进程独有 c)进程控制块(PCB):它和进程一一对应,PCB是操作系统能感知进程存在的唯一标 识,操作系统正是通过管理PCB来管理进程的。系统创建进程时,为每个进程分 配PCB,进程执行完成后,系统释放PCB,进程也随之消亡。 8.进程的切换: a)进程上下文包含用户级上下文、系统级上下文、寄存器上下文 b)进程上下文切换是核心态的切换,不发生在用户态。 c)用户态到核心态之间的转变是CPU模式的改变。模式切换不同于进程切换,并不 引起进程状态的改变。 9.为什么会提出线程这个概念?进程的缺点是什么? a)进程切换开销大 b)进程通信代价大 c)进程之间并发性粒度粗,并发度不高

常见的Java上机面试题

常见的Java上机面试题 在程序员面试中,主要的考试形式分为笔试和上机编程考试两部分。笔试主要考查面试者的基础是否牢固;上机考试主要考查面试者的实际开发能力和技术技巧。 上机编程考试,要求面试者能够根据题目的要求,使用一种编程工具,编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是,这类面试题要求能够正确运行,往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符,而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类,希望能够给读者带来帮助和启示。 17.1 Java基础编程试题(1) 在上机编程类的面试题中,大部分涉及基础编程,例如算法、语法、常用的类等知识点。 面试题1 怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。 参考答案 具体代码实现如下: 1.package core_java; 2.import java.util.Scanner; 3.public class InterceptionStr { 4.static String ss; //要进行截取操作的字符串 5.static int n; //截取的字符串的字节数 6.public static void main(String[] args) { 7. System.out.println("请输入字符串:"); 8. Scanner scStr = new Scanner(System.in); //从键盘获取字符串 9. ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 10. System.out.println("请输入字节数:"); 11. Scanner scByte = new Scanner(System.in); //从键盘获取字符串 12. n = scByte.nextInt(); //将Scanner对象中的内容以数值的形式取出来

求职者常见面试问题及回答技巧教学提纲

求职者常见面试问题及回答技巧 面试的时候面试官会有很多方法来考验面试者的各方面能力,面试官的问题通常能够反映出面试者的性格,工作能力等方面。今天给大家带来的是求职者常见面试问题及回答技巧介绍,欢迎大家参考。 1、你觉得你个性上最大的优点是什么? 回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在北大青鸟经过一到两年的培训及项目实战,加上实习工作,使我适合这份工作。我相信我能成功。 2、说说你最大的缺点? 回答提示:这个面试问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。 3、你对加班的看法? 回答提示:实际上好多公司问这个面试问题,并不证明一定要加班。只是想测试你是否愿意为公司奉献。回答样本:如果是工作需

要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。 4、你对薪资的要求? 回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。 回答样本一:“我对工资没有硬性要求。我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多 回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。 回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。 5、在五年的时间内,你的职业规划? 回答提示:这是每一个应聘者都不希望被问到的面试问题,但是几乎每个人都会被问到。比较多的答案是”管理者“。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作”顾问“、”参议技师“或”高级软件工程师“等等。当然,说出其他

Java面试题大全(答案版)

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、Java有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上? Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上 不能作用在long上,也不能作用在String上 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。s1+=1不会报,因为JVM会对它特殊处理(自动强转) 7、char型变量中能不能存贮一个中文汉字?为什么? 可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的 8、编程题: 用最有效率的方法算出2乘以8等於几? 2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的 9、请设计一个一百亿的计算器 思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 引用变量不能变 11、"=="和equals方法究竟有什么区别? ==和equals方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 12、静态变量和实例变量的区别? 语法上不同: 静态变量前要加static关键字,实例变量不需要 程序运行时不同: 实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 13、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 14、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0,Integer是int的包装类,默认值是null,即Integer可以表示未赋值和赋值为0 15、(麦死)Math.round(乱的)(11.5)等於多少? Math.round(-11.5)等於多少?

计算机常见算法面试题

简介:计算机考研之家搜集的华为C语言经典面试题,来试试你的C语言水平吧。每道题都附有详细解答和讲解,很有参考价值的C语言面试题。 怎么判断链表中是否有环? bool CircleInList(Link* pHead) { if(pHead = = NULL || pHead->next = = NULL)//无节点或只有一个节点并且无自环 return (false); if(pHead->next = = pHead)//自环 return (true); Link *pTemp1 = pHead;//step 1 Link *pTemp = pHead->next;//step 2 while(pTemp != pTemp1 && pTemp != NULL && pTemp->next != NULL) { pTemp1 = pTemp1->next; pTemp = pTemp->next->next; } if(pTemp = = pTemp1) return (true); return (false); } 两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串 void insert(char *s, char *t, int i) { memcpy(&s[strlen(t)+i],&s[i],strlen(s)-i); memcpy(&s[i],t,strlen(t)); s[strlen(s)+strlen(t)]='\0'; } 1。编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。 char * search(char *cpSource, char ch) { char *cpTemp=NULL, *cpDest=NULL; int iTemp, iCount=0; while(*cpSource) { if(*cpSource == ch) { iTemp = 0; cpTemp = cpSource; while(*cpSource == ch) ++iTemp, ++cpSource; if(iTemp > iCount)

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

常见面试题目与回答要点提示

常见面试题目与回答要点提示 一、应试者个人概况 一般情况下,有关个人背景的材料已填写在履历表内,面试时再提问只是为了验证一下,或者以这些不需应试者思考的问题开始,有利于应试者逐渐适应展开思路,进入“角色”,尤其是对那些一进入考场就显得紧张、拘谨的应试者,更该先提一些容易回答的问题,帮助他树立信心,诱导他正常发挥出自己的水平。这方面常问的问题有: 1 请介绍一下你的家庭状况。 2 你的籍贯在哪里? 3 现在你住在哪里? 4 你父母分别从事什么职业? 5 你有几个兄弟姐妹?分别在干什么? 6 你是否结婚了?妻子(或丈夫)从事什么职业? 7 你有孩子吗?几岁了? 8 你现在的生活状况怎么样? 9 你现在的居住情形怎样?是几居室、公房还是自宅? 对这些问题,应试者不需怎么思考,但最重要的是一开始就要注意调整好自己的应试状态,充满自信,口齿清楚,回答全面、完整,但又要注意尽量简洁。一开始的应试状态如何会直接影响到整个面试过程中的表现。 二、应试者的求学经历 受教育的大体状况在履历表中已列出,提问这方面的情况是为了获悉更详细的情况。 1 从你的申请表中我了解到你进入××(高中),毕业于××年,请你进一步告诉我们一些有关申请表中所述的情况,并对你的高中阶段作一个简短的详细说明,尤其是那些对你的职业生活有影响的事件。 2 您觉得您的学校是哪一类的(必要的话,说出它是大是小,在乡村还是在城市),简单地说,你高中阶段过得怎么样? 3 你学过哪些课程(一般的,技术性的或者大学先修班)? 4 在学校,你都参加过什么活动? 5 你的学习成绩如何?在班上所处的位置如何?你有哪些学习习惯? 6 有哪些人或事件对你的职业选择产生了影响? 7 你担任过什么职位?受到哪些奖励?(或获得过什么荣誉?取得过什么成就?) 8 读高中时你从事过什么社会工作?假期是怎么过的? 9 高中结束时你的职业考虑是什么? 10 我注意到从××年至××年你进入××学校学习,获得了××学位。你为什么选择这所学校? 11 你能告诉我,在大学阶段对你的职业生活有影响的事件吗? 12 一般地说,你的大学生活情况如何? 13 你为什么选择这个专业? 14 你都主修过什么课程?选修过什么课程?为什么选修这些课程? 15 你参加什么校内团体?是作为一般的成员,领导还是其他?你为什么参加这些团体?有什么收获? 16 你在大学有没有工作经历?如果有,工作种类是什么?是在学校期间还是假期?每周工作多长时间?你对之有什么感受? 17 对你选择职业有影响的因素有哪些? 18 毕业时你的职业考虑是什么? 19 在大学里你最喜欢哪些课程?为什么?成绩如何? 总体来说,令招聘单位感兴趣的内容可适当多谈一些,如,从事过什么社会工作?有什么感受?对这个问题,如果是肯定的回答,在谈感受时,应着重谈一谈有什么收获;如果没有参加过社会工作,应谈一谈校内课余时间或假期是如何度过的,从事了其他什么有意义的活动。再如,你选修过什么课程?如果选修过一些和公务员工作有关的课程,如公文写作,应着重谈一下这些课程主要讲了些什么,你有什么收益。再如,曾获得什么荣誉和奖励?不要仅简单地回答获得什么,还要简要叙述一下为什么被授予这个荣誉。 三、应试者的工作经历

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.sodocs.net/doc/6714787570.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

面试常见问题_计算机网络

计算机网络 OSI与TCP/IP各层的结构与功能,都有哪些协议。

TCP/IP

相似之处:

基于独立的协议族,层的功能划分相似 差异: ISO/OSI:从概念模型到协议实现; TCP/IP:从协议实现到概念描述 层次数量差别; 2.TCP与UDP的区别。 ●UDP(UserDatagramProtocol):不提供复杂的控制机制,利用IP提供面向无连接的通信 服务。并且他是将应用程序发来的数据在收到那一刻,立刻按照原样发送到网络上的一种机制。即使出现网络拥堵,UDP也无法进行流量控制等避免拥塞的行为。如果传输途中出现丢包,也不负责重发。甚至出现包的到达乱序时也没有纠正功能。如果需要这些细节控制,要交给采用UDP的应用程序处理。UDP将控制转移到应用程序,只提供作为传输层协议的最基本功能。 ●TCP(TransmissionControlProtocol):TCP充分实现了数据传输时的各种控制功能,可 以进行丢包的重发控制、对乱序的分包进行顺序控制。此外,TCP作为一种面向有链接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。 ●TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠 性传输。 ●如何加以区分使用?

TCP用于传输层有必要实现可靠性传输的情况。UDP主要用于对高速传输和实时性有较高要求的通信或广播通信。 区别: 1)TCP面向连接;UDP是无连接的,发送数据之前不需要建立连接。 2)TCP提供可靠的服务。TCP传送的数据无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付。 3)TCP面向字节流,实际上TCP把数据看成一串无结构的字节流;UDP是面向报文的,UDP 没有拥塞控制,网络出现拥塞不会使源主机的发送速率降低。 4)每一条TCP连接只能是点对点的;UDP支持一对一、一对多、多对一和多对多的交互通信5)TCP首部开销20字节;UDP首部开销8字节; 6)TCP逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道 3.TCP报文结构。 ?IP结构 首部固定长度20字节,所有IP数据报必须具有。 可选字段,长度可变。 ?版本:占4位,值IP协议的版本,当前IP协议版本号为4(IPv4) ?首部长度:4位,表示最大数值是15个单位(一个单位4字节),首部最大值为60字节。?区分服务:未被使用。

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/6714787570.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.sodocs.net/doc/6714787570.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/6714787570.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.sodocs.net/doc/6714787570.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/6714787570.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

100道面试常见问题经典面试题

工作动机、个人愿望 ?问题:请给我们谈谈你自己的一些情况 ?回答:简要的描述你的相关工作经历以及你的一些特征,包括与人相处的能力和个人的性格特征。如果你一下子不能够确定面试者到底需要什么样的内容,你可以这样说: “有没有什么您特别感兴趣的范围?” ?点评:企业以此来判断是否应该聘用你。通过你的谈论,可以看出你想的是如何为公司效力还是那些会影响工作的个人问题。当然,还可以知道你的一些背景。 问题:你是哪年出生的?你是哪所大学毕业的?等等 回答:我是XXXX年出生的。我是XX大学毕业的。 ?点评:这类问题至为关键的是要针对每个问题简洁明了的回答,不可拖泥带水,也不必再加什么说明。完全不必再画蛇添足的说“我属X,今年XX岁”之类的话。至于专业等 或许主考官接下来的问题就是针对此而言的,故而不必迫不及待和盘托出。 ?问题:你认为对你来说现在找一份工作是不是不太容易,或者你很需要这份工作? ?回答: ? 1.是的。 ? 2.我看不见得。 ?点评: ?一般按1回答,一切便大功告成。 ?有些同学为了显示自己的“不卑不亢“,强调个人尊严,故按2回答。结果,用人单位打消了录用该生的念头,理由是:“此人比较傲“一句话,断送了该生一次较好的就 业机会。 ?问题:为何辞去原来的工作? ?回答:工作地点离家较远,路上花费时间多,发生交通问题时,影响工作。贵公司的工作岗位更适合自己专业(个性)的发展。 ?点评:为了避免应聘者以相同的原因辞职,公司尽量能做到对这方面原因的了解,有助于创造一个良好的工作环境和人际氛围。因此,应聘者最好说出对方能信服的理由。 如果自己确有缺点,要说出“将尽量克服自己缺点”,作为有信心改变这类情况的答复。 ?问题:你是怎么应聘到我们公司的?

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关键字 以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.sodocs.net/doc/6714787570.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A. 1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } } A.run main B.main run C.main D.run E.不能确定 5.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?( B ) A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值

计算机专业复试面试经典问题(含答案)

1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢while(1){}或者for(;;){} 3. 用变量a给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针(A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an intege)r d)一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer ) 答案是: a) int a; 键字static的作用是什么 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 5. 关键字const有什么含意表示常量不可以修改的变量。 const int a; int const a; const int *a; int * const a; int const * a const; 前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也

相关主题