ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:33.40KB ,
资源ID:27854886      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27854886.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java面试笔试题大汇总七.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java面试笔试题大汇总七.docx

1、Java面试笔试题大汇总七Java面试笔试题大汇总(七) 149、JAVA代码查错 (1) 下面这段代码有什么错误?abstract class Name private String name; public abstract boolean isStupidName(String name) 答: abstract method必须以分号结尾,且不带花括号。(2) 下面这段代码有错吗?public class Something void doSomething () private String s = ; int l = s.length(); 答: 有错。局部变量前不能放置任何访问修

2、饰符 (private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。(3) 下面这段代码有错吗?abstract class Something private abstract String doSomething ();答: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起

3、来呢? (同理,abstract method前不能加final)。(4)下面这段代码有什么错误?public class Something public int addOne(final int x) return +x; 答: 这个错误比较明显。int x被修饰成final,意味着x不能在addOne method中被修改。(5) 下面这段代码有错吗?public class Something public static void main(String args) Other o = new Other(); new Something().addOne(o); public voi

4、d addOne(final Other o) o.i+; class Other public int i;答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。(6) 下面这段代码有错吗?class Something int i; public void doSomething() System.out.println(i = + i);

5、 答案: 正确。输出的是i = 0。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。(7) 和上面一题只有一个地方不同,就是多了一个final。下面这段代码有错吗?class Something final int i; public void doSomething() System.out.println(i = + i); 答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant

6、 variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为final int i = 0;。(8) 下面这段代码看上去很完美,错在哪里呢?public class Something public static void main(String args) Something s = new Something(); System.out.println(s.doSomething() returns + doSomething(); public String doSomething() return Do somethi

7、ng .; 答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成System.out.println(s.doSomething() returns + s.doSomething();。同理,static method不能访问non-static instant variable。(9) 此处Something类的文件名叫OtherThing.javaclass Something private s

8、tatic void main(String something_to_do) System.out.println(Do something .); 答案: 从没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同,错误,main一定是public的。(10) 下面这段代码有错吗?interface A int x = 0;class B int x =1;class C extends B implements A public void pX() System.out.println(x); public static void main(

9、String args) new C().pX(); 答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。(11) 这个错误不容易发现interface Playable void play();interface Bounceable void play();interface Rollable extends Pla

10、yable, Bounceable Ball ball = new Ball(PingPang);class Ball implements Rollable private String name; public String getName() return name; public Ball(String name) this.name = name; public void play() ball = new Ball(Football); System.out.println(ball.getName(); 答案: 错。interface Rollable extends Playa

11、ble, Bounceable没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的Ball ball = new Ball(PingPang);。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说Ball ball = new Ball(PingPang);实际上是public static final Ball ball = new Ball(PingPang);。在Ball类的Play()方法中,ball = new

12、Ball(Football);改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在ball = new Ball(Football);这里显示有错。150、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。public class ThreadTest1 private int j; public st

13、atic void main(String args) ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i2;i+) Thread t=new Thread(inc); t.start(); t=new Thread(dec); t.start(); private synchronized void inc() j+; System.out.println(Thread.currentThread().getName()+-inc:+j);private syn

14、chronized void dec() j-; System.out.println(Thread.currentThread().getName()+-dec:+j);class Inc implements Runnable public void run() for(int i=0;i100;i+) inc(); class Dec implements Runnable public void run() for(int i=0;i100;i+) dec(); 6、 线程的基本概念、线程的本状态以及状态之间的关系?新建 (Born) : 新建的线程处于新建状态?就绪 (Ready)

15、: 在创建线程后,它将处于就绪状态,等待 start() 方法被调用?运行 (Running) : 线程在开始执行时进入运行状态?睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后,线程将进入就绪状态?等待 (Waiting) : 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。?挂起 (Suspended) : 在临时停止或中断线程的执行时,线程就处于挂起状态。?恢复 (Resume) : 在挂起的线程被恢复执行时,可以说它已被恢复。?阻塞 (Blocked) 在线程等待一个事件时(例如输入/输出操作),就称其处

16、于阻塞状态。?死亡 (Dead) 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状态。 5、 串行化的注意事项以及如何实现串行化答:如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法 7、 线程的同步、如何实现线程的同步答:当两个或多个线程同时访问同一个变量,并且以个线程需要修改这个变量。就要用到线程同步。在Java 中,同步是通过 synchronized 关键字来定义的。 诺是想同步化某程序段,可以使用 synchronized(object)方法,其中内的程序语句被同步化。9、 socket通信

17、(tcp/udp区别及JAVA的实现方式)TCP传输控制协议,具有极高的可靠性,保证数据包按照顺序准确到达,但其也有着很高的额外负担。UDP使用者数据元协议,并不能保证数据包会被成功的送达,也不保证数据包到达的顺序,但其传输速度很快。大多数我们会使用TCP,偶尔才会动用UDP,如声音讯号,即使少量遗失,也无 关紧要。10、 JAVA的事件委托机制和垃圾回收机制java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。垃圾回收机制 垃圾收集是将分配给对象但不在使用的内存回收或

18、释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收11、 JDBC调用数据库的基本步骤导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭Connection对象12、 解析XML文件的几种方式和区别答:Dom解析 在内存中创建一个DOM树,能随机访问文件内容,也可以修改原文件内容SAX解析 线性解析,不能随机访问,也无法修改原文件Dom解析要先用SAX解析创建DO

19、M树13、 JAVA的四种基本权限的定义public private protected 默认14、 JAVA的国际化 答:Java 中提供了诺干国际化明感类,来实现国际化的。例如:dateformat timezone 等等。5、 servlet的配置Adminjb-aptech.adminservlet email adminjb- 16、 谈谈你对swing mvc模式的理解?答:Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swing的希望能够达到的目标就包括: 模型驱动(Model-Driven)的编程方式。 提供一套单一的API,但是能够支持多种视感(look-a

20、nd-feel),为用户提供不同的界面。 严格的说,Swing中的MVC实际上是MVC的一个变体:M-VC。 Swing中只显示的定义了Model接口,而在一个UI对象中集成了视图和控制器的部分机制。View和Control比较松散的交叉组合在一起,而更多的控制逻辑是在事件监听者部分引入的。 但是,这并没有妨碍在Swing中体现MVC的精髓。事实上,在Swing的开发初期,Swing确实是按照标准的MVC模式来设计的,但是很快的问题就出现了:View和Controller实际上是紧密耦合的,很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大的必要。18、 J

21、ava程序怎么优化?答:提高JAVA的性能,一般考虑如下的四个主要方面: 程序设计的方法和模式 (2) JAVA布署的环境。 (3) JAVA应用程序的实现 (4) 硬件和操作系统 为了提高JAVA程序的性能,需要遵循如下的六个步骤。 a) 明确对性能的具体要求 b) 了解当前程序的性能 c) 找到程序的性能瓶颈 d) 采取适当的措施来提高性能 e) 只进行某一方面的修改来提高性能 f) 返回到步骤c,继续作类似的工作,一直达到要求的性能为止。 动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询?答:讲查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修

22、改相应的存储过程即可再不修改程序的情况下实现查询。2、 如何优化数据库,如何提高数据库的性能?答:优化数据库主要是优化查询语句,通过高性能的查询语句提高数据库的性能。3、 设计数据库应注意那些问题答:首先应尽量满足三范式的要求,在一定程度上打破3范式的要求以提高数据库的性能。4、 表与表之间的关联关系答:分为3种:一对一、一对多、多对多。5、 主键和外键的区别答:主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。3. 数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何去小数点前

23、两位,并四舍五入。4. 日期和时间 如何取得年月日,小时分秒Date dat=new Date();dat.getYear();dat.getMonth();dat.getDay();dat.getHours();.如何取得从1970年到现在的毫秒数long now=dat.getTime();如何获取某个日期是当月的最后一天如何格式化日期DateFormate df=DateFormate.getInstance();df.Format(dat);6. 文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件6. 文件和

24、目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件4. 描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 Cookie是在客户端开辟的一块可长期存储用户信息的地方;8. 描述一下你最常用的编程风格。(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,

25、全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。(2) 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素的定义:equals()hashCode()toString()clone()(implement Cloneable)implement Serializable(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口

26、部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:一个复杂的开关语句:考虑采用“多形”机制数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现许多成员变量在特征上有很大的差别:考虑使用几个

27、类(7) 让一切东西都尽可能地“私有”private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素只有private字段才能在非同步使用的情况下受到保护。(8) 谨惕“巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。(9) 若不得已进行一些不太雅观的

28、编程,至少应该把那些代码置于一个类的内部。(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。(12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。(13) 涉及构建器和

29、异常的时候,通常希望重新丢弃在构建器中捕获的任何异常如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1