java程序员笔试试题

来源:互联网 发布:淘宝的购物评级怎么涨 编辑:程序博客网 时间:2024/06/16 06:41

****JAVA程序员面试试题
1、面向对象的语言具有_封装_性、继承_性、多态性。
2、JAVA中包含几种类型的流:字节 字符
3、列举J2EE的包括的几个重要技术_ 13种核心技术:JDBC, JNDI, EJBS, RMI, JSP, JAVA SERVLETS, XML, JMS, JAVA IDL, JTS, JTA, JAVAMAIL 和 JAF _ __ __ _ _ __等。
4、GC的全称及中文:_ _
5、封装的概念:我们需要把可变的部分和稳定的部分分离出来,将稳定的部分暴露给其他块,而将可变的部分隐藏起来,以随时可以让它修改。这项工作就是封装.
6、int和Integer有什么区别?
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是java 的原始数据类
型,Integer 是java 为int 提供的封装类。Java 为每个原始类型提供了封装类。
原始类型封装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有
不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当
引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值
为 null,而原始类型实例变量的缺省值与它们的类型有关。
7、String 和 StringBuffer的区别?
首先,String和StringBuffer主要有2个区别:
(1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值
(2)String类对象的性能远不如StringBuffer类。
关于以上具体解释如下:
在java中有3个类来负责字符的操作。
1.Character 是进行单个字符操作的,
2.String 对一串字符进行操作。不可变类。
3.StringBuffer 也是对一串字符进行操作,但是可变类。
String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
注意:不能通过赋值符号对他进行赋值.
sb = “welcome to here!”;//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中赋值的时候可以通过它的append方法.
sb.append(“hello”);
字符串连接操作中StringBuffer的效率要比String高:
String str = new String(“welcome to “);
str += “here”;
的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后
再将StringBuffer toSting();
这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.
并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.
这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.
8、Collection和collections的区别?
1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set
而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

1) 排序(Sort)
2) 混排(Shuffling)
3) 反转(Reverse)

4) 替换所以的元素(Fill)
5) 拷贝(Copy)
6) 返回Collections中最小元素(min)
7) 返回Collections中最小元素(max)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的
8) lastIndexOfSubList
返回指定源列表中最后一次出现指定目标列表的起始位置
9) IndexOfSubList
返回指定源列表中第一次出现指定目标列表的起始位置
10) Rotate
根据指定的距离循环移动指定列表中的元素
9、abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
Java中instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。
10、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
11、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
有两种定义形式,dtd文档类型定义和SchemaXML模式;
XML Schema 和DTD都用于文档验证,但二者还有一定的区别,本质区别是:Scheme本身是xml的,可以被XML解析器解析,这也是从DTD上发展Schema的根本目的。
另外,
XML Schema 是内容开放模型,可扩展,功能性强,而DTD可扩展性差。
XML Schema 支持丰富的数据类型,而 DTD不支持元素的数据类型,对属性的类型定义也很有限。
XML Schema 支持命名空间机制,而DTD不支持。
XML Schema 可针对不同情况对整个XML 文档或文档局部进行验证;而 DTD缺乏这种灵活性。
XML Schema 完全遵循XML规范,符合XML语法,可以和DOM结合使用,功能强大;而DTD 语法本身有自身的语法和要求,难以学习。

有DOM文档对象模型,SAX(Simple API for XML),STAX等。
DOM:文档驱动,处理大行文件时,其性能下降的非常厉害,这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
SAX:不同于DOM,SAX是事件驱动型的XML解析方式。他顺序读取XML文件,不需要一次全部装在整个文件,当遇到像文件开头,文档结束,或者标签开头与标签结束时,他会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问,且是只读的。当前浏览器不支持SAX
SAXParserFactory factory = SAXParserFactory.newinstance();
SAXParser saxparser = factory.newSAXParser(); //创建SAX解析器
MyHandler handler = new MyHandler(); //创建事件处理器
saxParser.parse(new File(“Sax_1.xml”),handler); //绑定文件和事件处理者

STAX:Streaming API for XML ,是用“JavaTM”语言处理XML的最新标准,STAX与其他方法的区别就在于应用程序能够把XML作为一个文件流来处理。STAX允许应用程序把代码这些事件逐个拉出来,而不用提供在解析器方便时从解析器中接受事件的处理程序。
12、简述你对ajax的理解,及你在项目中的运用。
一、什么是真正的项目管理
  任何成功的项目都不可能是某一个人的功劳。一个成功的项目是多个部门的众多人员共同努力的结果。这些人,组成一个项目团队,具有不同技术水平,才能,工作风格和知识。
  项目团队需要有一个共同目标,共同的前景,并且清楚的知道他们要做的工作。该团队,无论采取何种报告结构,必须能够很好地工作和激励以达到商业目标。
  项目经理是项目团队的领导。他/她的职责是激励团队以积极的方式完成任务。该职位需要具有技术和人际技能,需要每天关注的内容(顺序如下)如下:
  业务
  公司
  项目
  团队
  个人
  技术和方法的变更
  项目经理的技能应包括技术技能和管理技能,坚实的技术基础能够在技术方面对团队起指导作用,管理技能有助于沟通和解决问题。管理技能不仅限于技术方面,还包括解决问题的能力,估算能力,编制计划的能力,人际和沟通能力。
  你可能已经意识到自己忽视或缺乏某些领域的知识。因此,本文的读者为:
  没做过项目经理的人
  已经是项目经理,但认为自己的技能已经过时的人
  二、项目经理是什么
  项目经理角色
  项目管理是估算、计划编制、重组、整合、评估和修正等过程的不断重复,其中包括管理人员,用户参与和解决问题,直至达到项目的商业目的。
  管理层需要什么样的人
  每个经理都在找有能力完成某一商业目标的人。最困难的是要了解他们懂什么和能做是么。比较困难的是,不知道需要多少人。因此,你必须使招聘人员认为你是真诚可靠的。这不仅限于项目范围内,还包括与管理层和客户保持联系。
  管理是指无论在有利或不利的环境中都能应对自如。在问题没有被详细表述或没有可选的解决方案时,你必须表现出你的管理才能。如果你让管理层来解决所有的问题,那要你还有什么用,管理层正在做你做的工作呢。
  人员管理技能
  了解人们的心理和他们的工作方式是项目经理必需的素质之一。每个人都不同。通过了解你的和别人的工作方式,可以缓解压力,便于沟通。
  IBM多年来的口号是“尊重每一个人”。这具体表现为了解你日常工作中接触的人。要做到这点,你必须了解你自己并且知道你是如何激励别人或对别人施加压力的。
  阅读迈尔斯-布里格斯(Myers-Briggs)人格类型分析方面的书籍是一个很好的开端。KatherineBriggs和她女儿IsabelBriggs-Myers制作的问卷(MBTI迈尔斯-布里格斯人格类型定向)用于帮助人们发现他们的个人风格及对团队产生的影响。该问卷是在CarlJung的“心理类型”基础上发展而来的。此类书在书店有关自我提升和心理学的分类中均能找到。
  你应该理解个人工作风格,并且牢记这些实践经验。以下所列的项目应该成为与人相处的第二种本能。也是每个想成功的项目经理必备的常识:
  尊重每一个雇员(供应商)
  虚心倾听
  做出见识广博的决策
  不要当众批评别人
  了解自己的实力和做事的先后顺序
  真诚地听取团队成员的意见和建议
  对目标和交付产品有清楚的了解
  在IT团队中提倡合作和信息共享
  了解每个人的做事风格及他们的优缺点
  表扬应以团队成员喜欢的方式,真诚地表达
  将负面影响视为成长的机会
  以积极的方式提供指导
  你不能管理你无法控制的东西
  如前所述,项目管理是执行一系列可重复的任务以完成某个商业目标。为了完成任务,你必须建立控制体系。因此,应对下列方面的问题有所准备:
  度量方法:度量方法如果没有管理好或运用好,会产生负面影响。度量方法可以作为计划编制的“输入”,可以在项目进展过程中和结束时进行统计,为下一个项目或项目的下一个阶段提供参考。用度量方法来评估员工的绩效是不恰当的。
  项目计划:通过制定项目计划能够得到正在执行的任务的关键检查点。这些检查点是达到商业目标的路标。要记住项目计划不仅只对新的开发项目有用。他们在支持和维护中同样重要。许多项目经理都犯同样的错误,他们编制一个十分出色的计划,但从不付诸实施。事实上,他们很少按计划进行工作。
  预算:估算和编制计划的同时要做预算。许多项目经理要制作和管理他们自己的预算。如果你能使实际工作进展和计划一致,那么你的工作就会变得比较简单。大多项目管理工具都具有使费用(按小时,天,或年计)与某个资源相关。许多公司的财务部门认为的资源费用包括企业一般管理费用。另外一些公司可能根据项目名称或用户,管理方式,员工和顾问分别计算。(对于顾问,还要考虑他们的加班费)设备费用也要单独考虑。记住还要考虑运行项目应用所需的软件工具和硬件。(例如销售部门的彩色打印机)
  员工工作计划:人是任何项目中有价值的。一个人可以促进项目成功或项目进展顺利,也可能对项目产生破坏。员工工作计划能对员工的成长起到建设性和实际作用。大多组织有自己的格式。但无论形式如何,下列事项必须包括:职责明确;客观地评价员工的优缺点;为员工提供参与制定其发展方向和对其进行评估的机会。
  项目管理的奖励/压力
  项目经理的角色是一柄双刃剑。这个职位要承担一定的压力,也会得到相应的奖励。一旦你成为项目经理,就必须对这两方面做好准备。
  成功地完成一个系统,每个人都会得到奖励。能够帮助员工开发他们的潜能是项目经理特有的回报。在任何任务中,人都是最重要的元素。通过运用自己的管理技能造就了一个充满活力的团队,是一件值得骄傲的事。
  人员同样是最大的压力。人毕竟会受到那些不受你控制的事物的影响。团队成员的家庭困难,彼此间的个性冲突都需要项目经理来处理。
  任何有关应用或团队成员的事情首先要找的就是项目经理。上层领导和用户认为你是对项目拖延、需求遗漏、系统中的bug和不正确等唯一的负责人。
  三、准备面试的方法
  书、杂志、组织和研讨会
  本文的参考目录中列出了许多能得到有效的管理实践信息的地方。去寻找管理方面的书籍,包括技术管理和商业管理两个方面。阅读管理大师,例如:PeterDrucker,C.A.Gallagher和A.Maslow写的书和文章。他们提供了在任何领域都使用的管理知识。信息管理大师例如:TomDeMarco,M.Page-Jones,EdYourdon,L.L.Constantine等等提供了许多条理清楚的、经过实践检验的方法。
  如果你要同用户一起工作,要阅读一本有关领域的专业书籍。了解业务比了解技术环境更重要。事实上,让用户参加面试过程越来越流行。要准备得更充分,可以买一本《哈佛商业评论》(HarvardBusinessReview)这是一本很好的杂志,适用于商业读者同样也适用于IT管理。许多IT杂志例如《CIO杂志》及在参考书目中列出的书目中都有有关项目管理和人员管理方面的文章。这些杂志中还包括概括或详细的技术性文章。
  可以和美国管理协会(AMA)和其他商业组织取得联系,获取管理信息。值得一提的是,卡奈基梅隆大学的软件工程研究所(SEI)在90年代提出的管理软件过程,最新标准版本为SEI9000。
  许多技术研讨会,例如数字咨询和技术转换研究所(DigitalConsultingandTechnologyTransferInstitute)有许多不同领域的项目管理和技术研讨会。另一种途径是通过你所在的组织。他们也许会提供有关授权、谈判和倾听技巧等的课程,所有这些都有助于你准备项目管理。
  你应该了解的软件
  掌握一种项目管理工具。例如微软的Project和AppliedBusinessTechnology/ProjectWorkbench。所有这些工具都有许多有效的项目管理方法和术语字典。
  除了上述提到的工具外,还有一个越来越流行的工具可以针对不同技术环境中的项目在计划编制、费用估算和管理方法上提供帮助。这个工具就是LBMS/ProcessEngineer,具有CASE界面的工具。
  如果你使用过此类工具,把这些内容列在你的简历中。当然,不仅要掌握工具,你还必须具有坚实的基础知识和项目管理方法。
  一个项目经理必须足智多谋。通过email进行通信已经取代了电话和邮寄备忘录。许多公司有自己的系统,还有许多公司使用LotusNotes。无论是用何种产品,必须具有如下性能:
  能够与处于不同地理位置的人取得联系
  能够有效地通知团队(包括供应商)范围,进度的变更
  能很快地解决小问题
  要记住人们工作方式的差别,性格内向的人更愿意通过email沟通。这样他们可以有时间思考问题的答案而不是在会议上立刻做出答案。
  作为一个项目经理,你可能会作报告(report)和介绍(presentation)。因此,需要掌握字处理软件和图形软件。这些软件在市场上都可以买到。在你的简历上列出你会使用的此类软件。
  寻找思想
  任何行业都有好的项目经理和差的项目经理。你可以从两种项目经理身上得到启示(什么是应该做的而什么是应该避免的)。如有可能,问一些优秀的项目经理他们是如何做的。如果你对你的职业发展道路还不太清楚,你可以拿一篇刚刚读过的有关文章,问问这些项目经理对此文的观点。
  一个成功的项目经理的标志有拥有一支气氛融洽的积极的团队,上层领导的信任和用户的尊重。一致的行动是另一个标志,它是衡量领导能力的基础。优秀的项目经理应该了解每个雇员的长处和短处。他们认为失败并不是缺点,而是一次学习机会。
  项目经理必须建立一套专业标准。但按照一套完美的例子来进行管理却是一个失败的项目经理。这虽然说明他们的多才多艺,但更体现了他们在授权和沟通方面的能力不足。使原来想积极工作的员工变得消极的做法可以毁了项目经理。你在技术方面的能力应该用于指导和培训员工。如果你参与编程或设计,你不是在开发你的团队,也不是在做项目经理。
  项目计划技术
  以下是在面试中通常会提到的有关项目计划编制的术语和图表。大多项目计划编制工具都会使用到一些或全部术语和功能。你应该复习一下有用的一个或多个项目管理工具,这有助于你进一步熟悉常用的技术和功能。
13、简述你所知的或听说过的j2ee中的几种常见设计模式?及对设计模式的一些看法
Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问
Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性
Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性
Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。
14、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
package test;

import java.sql.*;
import java.util.Scanner;

public class jdbc {
public static void main(String args[]) {
System.out.println(“请输入要查询内容:”);
Scanner sc = new Scanner(System.in);
String string = sc.nextLine();
System.out.println(“请输入查询间隔:”);
int a = 1;
int num = sc.nextInt();
if (string.length() < num) {
System.out.println(“查询不到”);
}
if (num % 2 != 0) {
num = num - 1;
}
StringBuffer sb = new StringBuffer();
sb.append(string);
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) > 126 || sb.charAt(i) < 0) {
sb.insert(i + a, ” “);
}
}
int i;
for ( i = 0; i < num - 1; i++) {
if (sb.charAt(i) != ’ ‘)
System.out.print(sb.charAt(i));
}
if (sb.charAt(i+1) == ’ ‘) {

    }else{        System.out.println(sb.charAt(i));    }}

}
15.写出程序的输出结果
package test;
public class FatherClass {
public FatherClass() {
  System.out.println(“FatherClass Create”);
}
}
package test;
import test.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
  System.out.println(“ChildClass Create”);
}
public static void main(String[] args) {
  FatherClass fc = new FatherClass();
  ChildClass cc = new ChildClass();
}
}
FatherClass Create
FatherClass Create
ChildClass Create
16. 写一段Jdbc连Oracle的程序,并实现数据查询.
package test;
import java.sql.*;
public class jdbc {
String dbUrl = “jdbc:oracle:thin:@127.0.0.1:1521:orcl”;
String theUser = ” admin”;
String thePw = ” manager”;
Connection c = null;
Statement conn;
ResultSet rs = null;
public jdbc() {
try {
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
c = DriverManager.getConnection(dbUrl, theUser, thePw);
conn = c.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean executeUpdate(String sql) {
try {
conn.executeUpdate(sql);
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
rs = conn.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public void close() {
try {
conn.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ResultSet rs;
jdbc conn = new jdbc();
rs = conn.executeQuery(“select * from test”);
try {
while (rs.next()) {
System.out.println(rs.getString(“id”));
System.out.println(rs.getString(“name”));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}**

原创粉丝点击