`
t225com
  • 浏览: 660949 次
文章分类
社区版块
存档分类
最新评论

面试时候经常会问的一些问题(不断补充中) - BeanSoft

 
阅读更多
面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经常看到这些题).
如何把一段逗号分割的字符串转换成一个数组?
request.getAttribute() 和 request.getParameter() 有何区别?
response.sendRedirect() 和 forward() 区别?

和 <include> 区别? <br>List 和 Map 区别? <br>Struts 和 Spring 自动填充表单参数到 Bean 的大致原理? <br>说一下你用的 Spring + Hibernate 的方框图? 您都用到了哪些部分? <br>请用英文简单介绍一下自己. <br>请把 http://tomcat.apache.org/ 首页的这一段话用中文翻译一下? <br>Apache Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process. <br>Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. Apache Tomcat is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved, click here. <br>Apache Tomcat powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. Some of these users and their stories are listed on the PoweredBy wiki page. <br>try { <br>Connection conn = ...; <br>Statement stmt = ...; <br>ResultSet rs = stmt.executeQuery("select * from table1"); <br>while(rs.next()) { <br>} <br>} catch(Exception ex) { <br>} <br>这段代码有什么不足之处? <br>HTML 的 form 提交之前如何验证数值不为空? 为空的话提示用户并终止提交? <br>为什么要用 ORM? 和 JDBC 有何不一样? <br>Weblogic 的 Server, Machine, Node, Domain 都有何区别? <br>简要讲一下 EJB 的 7 个 Transaction Level? <br>最常见的: 用 JDBC 查询学生成绩单, 把主要代码写出来. <br>Tomcat 5 用 query.jsp?name=中文, 怎么把这个变量无乱码的取出来? <br>finally语句一定会执行么? <br>前几天有一个朋友去面试,被问到这样一个问题,如下 <br>1 public class smallT <br>2 { <br>3 public static void main(String args[]) <br>4 { <br>5 smallT t = new smallT(); <br>6 int b = t.get(); <br>7 System.out.println(b); <br>8 } <br>9 public int get() <br>10 { <br>11 try <br>12 { <br>13 return 2 ; <br>14 } <br>15 catch (Exception e) <br>16 { <br>17 return 3 ; <br>18 } <br>19 finally <br>20 { <br>21 return 4 ; <br>22 } <br>23 } <br>24 } <br>25 <br>输出: <br>4 <br>我记得学习的时候说有返回值的方法,执行完return语句后就会停止了;另一方面我还记得在try……catch语句中finally语句也是一定要执行的。于是在这里就产生了麻烦。试了一下,发现果然是执行了finally中的值。正好这两天公司在培训,我便把这个问题提给java很厉害的一个讲师,他用断点测试了一下,说是两个值都返回了…… <br>我又改了一小下,在get方法中逐个添上了输出信息到控制台的语句,发现居然能执行。如下 <br>1public class test <br>2{ <br>3 public static void main(String args[]) <br>4{ <br>5 test t = new test(); <br>6 int b = t.get(); <br>7 System.out.println("Third: a = "+b); <br>8 } <br>9 public int get() <br>10{ <br>11 try <br>12{ <br>13 System.out.println("First: a = "+2); <br>14 return 2; <br>15 } <br>16 catch(Exception e) <br>17{ <br>18 System.out.println(3); <br>19 } <br>20 finally <br>21{ <br>22 System.out.println("Second: a = "+4); <br>23 return 4; <br>24 } <br>25 } <br>26} <br>27 <br>输出: <br>First: a = 2 <br>Second: a = 4 <br>Third: a = 4 <br>可这明明是一个需要返回一个int整数的方法啊。 <br>一道面试题目 <br>一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。 <br>例:n=1237 <br>则输出为: <br>1237, <br>2474, <br>4948, <br>9896, <br>9896, <br>4948, <br>2474, <br>1237, <br>美资软件公司JAVA工程师电话面试题目 <br>1. Talk about overriding, overloading. <br>2. Talk about JAVA design patterns you known. <br>3. Talk about the difference between LinkList, ArrayList and Victor. <br>4. Talk about the difference between an Abstract class and an Interface. <br>5. Class a = new Class(); Class b = new Class(); <br>if(a == b) returns true or false, why? <br>6. Why we use StringBuffer when concatenating strings? <br>7. Try to explain Singleton to us? Is it thread safe? If no, how to make it thread safe? <br>8. Try to explain Ioc? <br>9. How to set many-to-many relationship in Hibernate? <br>10. Talk about the difference between INNER JOIN and LFET JOIN. <br>11. Why we use index in database? How many indexes is the maximum in one table as your suggestion? <br>12. When ‘Final’ is used in class, method and property, what dose it mean? <br>13. Do you have any experience on XML? Talk about any XML tool you used ,e.g. JAXB, JAXG. <br>14. Do you have any experience on Linux? <br>15. In OOD what is the reason when you create a Sequence diagram? <br>补一个内部培训用的 PPT: SQL Tuning in Sybase.zip 17KB, 英文, Sybase 调优, 大部分道理是通用的. <br>数据库三范式是什么? 别看问题简单, 我也经常答不上来被面试的人写上数据库不行. <br>还有就是 Sun Java 认证时候会考的一些英文选择题, 填空题, 模拟题也成. <br>赴港JAVA开发工程师的面试题目 <br>也是上个星期五的上午,按照与猎头的约定,接受了香港某软件供应商的面试。工作是分析程序员,需赴港工作,以下是面试过程以及题目(大概记下了90%),记下来与大家分享。 <br>第一部分:例行公事的英文自我介绍; <br>以下部分必须以粤语回答,本人非广东人,粤语会讲,但是不标准。 <br>第二部分:项目经验介绍,着重介绍项目背景,开发流程以及本人在项目开发过程中的角色; <br>第三部分:面试官根据简历提问: <br>(1)说出Abstract class与interface的不同? <br>(2)Oracle中如何进行错误处理?如果用户反应速度慢,你如何着手解决问题? <br>(3)图画板上列了两个table,问查询结果,主要是考inner join与left join的。 <br>(4)union和union all有什么不同? <br>(5)你用什么软件做设计? <br>(6)是否用过Websphere? <br>(7)iBatis与Hibernate有什么不同? <br>(8)谈谈Struts中的Action servlet。 <br>(9)是否开发过IBM portal项目。 <br>(10)是否介意加班? <br>(11)如果你去香港工作,你认为你最大的困难是什么? <br>第四部分:笔试,三个英文考试题目选一个作答,内容都是写一份email。 <br>出来后问了猎头,他说最迟一个星期内就有结果。 <br>结果,晚上就接到电话说通过了,并收到了合同和赴港申请的电子文件。工作地点是九龙,月薪18K(中等偏低),合同期一年。猎头催我尽快签合同,然后他们马上就去办工作签证。 <br>犹豫ing。 <br>每个JAVA初学者应该知道的问题 <br>对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。 <br>问题一:我声明了什么! <br>String s = "Hello world!"; <br>许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。 <br>这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句: <br>String string = s; <br>我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。 <br>问题二:"=="和equals方法究竟有什么区别? <br>==操作符专门用来比较变量的值是否相等。比较好理解的一点是: <br>int a=10; <br>int b=10; <br>则a==b将是true。 <br>但不好理解的地方是: <br>String a=new String("foo"); <br>String b=new String("foo"); <br>则a==b将返回false。 <br>根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是 false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。 <br>对象内容的比较,正是equals方法做的事。 <br>看一下Object对象的equals方法是如何实现的: <br>boolean equals(Object o){ <br>return this==o; <br>} <br>Object 对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出, Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。 <br>看一下一个极端的类: <br>Class Monster{ <br>private String content; <br>... <br>boolean equals(Object another){ return true;} <br>} <br>我覆盖了equals方法。这个实现会导致无论Monster实例内容如何,它们之间的比较永远返回true。 <br>所以当你是用equals方法判断对象的内容是否相等,请不要想当然。因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下 java doc以确认这个类的equals逻辑是如何实现的。 <br>问题三:String到底变了没有? <br>没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。请看下列代码: <br>String s = "Hello"; <br>s = s + " world!"; <br>s 所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。 <br>通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。 <br>同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做: <br>public class Demo { <br>private String s; <br>... <br>public Demo { <br>s = "Initial Value"; <br>} <br>... <br>} <br>而非 <br>s = new String("Initial Value"); <br>后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s都指向同一个对象。 <br>上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。 <br>至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即 StringBuffer。 <br>问题四:final关键字到底修饰了什么? <br>final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。 <br>引用本身的不变: <br>final StringBuffer a=new StringBuffer("immutable"); <br>final StringBuffer b=new StringBuffer("not immutable"); <br>a=b;//编译期错误 <br>引用指向的对象不变: <br>final StringBuffer a=new StringBuffer("immutable"); <br>a.append(" broken!"); //编译通过 <br>可见,final只对引用的“值”(也即它所指向的那个对象的内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。这很类似==操作符:==操作符只负责引用的“值”相等,至于这个地址所指向的对象内容是否相等,==操作符是不管的。 <br>理解final问题有很重要的含义。许多程序漏洞都基于此----final只能保证引用永远指向固定对象,不能保证那个对象的状态不变。在多线程的操作中,一个对象会被多个线程共享或修改,一个线程对对象无意识的修改可能会导致另一个使用此对象的线程崩溃。一个错误的解决方法就是在此对象新建的时候把它声明为final,意图使得它“永远不变”。其实那是徒劳的。 <br>问题五:到底要怎么样初始化! <br>本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。 <br>1. 类的属性,或者叫值域 <br>2. 方法里的局部变量 <br>3. 方法的参数 <br>对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。 <br>int类型变量默认初始值为0 <br>float类型变量默认初始值为0.0f <br>double类型变量默认初始值为0.0 <br>boolean类型变量默认初始值为false <br>char类型变量默认初始值为0(ASCII码) <br>long类型变量默认初始值为0 <br>所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。 <br>对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。 <br>对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在 catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧! <br>其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。 <br>问题六:instanceof是什么东东? <br>instanceof是Java的一个二元操作符,和==,&gt;,String s = "I AM an Object!"; <br>boolean isObject = s instanceof Object; <br>我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。 <br>instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类: <br>public class Bill {//省略细节} <br>public class PhoneBill extends Bill {//省略细节} <br>public class GasBill extends Bill {//省略细节} <br>在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断: <br>public double calculate(Bill bill) { <br>if (bill instanceof PhoneBill) { <br>//计算电话账单 <br>} <br>if (bill instanceof GasBill) { <br>//计算燃气账单 <br>} <br>... <br>} <br>这样就可以用一个方法处理两种子类。 <br>然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了: <br>public double calculate(PhoneBill bill) { <br>//计算电话账单 <br>} <br>public double calculate(GasBill bill) { <br>//计算燃气账单 <br>} <br>所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。 <br>BeanSoft 参加过的一次面试: <br>2004年8月18日 星期三 〖农历 甲申 猴年 七月初三〗 <br>笔试题目 <br>1. 写出常用的 Linux 命令 <br>a) 列出当前目录 <br>b) 列出所有系统变量 <br>c) 重命名文件 <br>d) etc... 记不住了. <br>2. Write a Java application use the Singleton pattern, it should have one instance per class. It should have two integer variable, one is count, on is inita. There should be two methods in this class, and the method should be thread safely in multi-thread environment. <br>a) a count() method, after each call the count should be added on by 1; <br>b) a reset() method, after each call the count should be set to the value of inita. <br>3. Write a JavaBean and a JSP file. The page should output a date string in this pattern "今天是2004年8月15日上午10:00", the value is taken from the bean. <br>4. 以下三个题目, 任选其一或多个: <br>1) 忘了..., 是关于 Java 的. <br>2) 写一个应用程序, 读出 STUDENT 表中的数据并打印出所有名称. 数据库系统任选. <br>3) 写一个 Servlet, 读取名为 url 的参数, 并连接到此字符串指定的地址上, 读取所有内容后显示给客户. <br>5. 6. 7. 都是关于 SQL 的, 例如 SELECT, UPDATE, DELETE 之类的, 还有的有子查询. 数据库系统没有限制. <br>8. Write a html file, it shoud has follow functions: <br>1) check whether the user <br>本文转自 <br><a href="http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html">http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html</a> </include>
分享到:
评论

相关推荐

    BeanSoft MySQL Java 开发套装

    BeanSoft MySQL Java 开发套装包含 MySQL 5.0 服务器,管理工具,JDBC 驱动和Java 访问数据库的示例代码。

    BeanSoft MySQL Java开发套装

    大家都知道吧。。BeanSoft MySQL Java开发套装

    BeanSoft MySQL Java 开发套装.doc

    BeanSoft MySQL Java 开发套装.doc

    MyEclipseHibernate快速入门

    注: 此文档原文(英文)位于 MyEclipse 安装后的帮助文档中. 最后修改: 五月 6, 2011十月 7, 2009 -------------------------------------------------------------------------------- 提纲 前言 准备工作 ...

    GUI程序设计----基于Eclipse插件开发

    1. 可视化JavaGUI-PPT.rar 可视化Java GUI程序设计演示文稿,对应书中的12章内容共12个文件。...建议使用BeanSoft MySQL Java 开发套装软件,将该文件解压到mysql_green\mysql50green目录下使用。

    MySQL 6 绿色精简BAT版 2.24 MB

    作为一名开发人员,我对绿色小软件情有独钟,因为用起来方便快捷嘛,便于携带,易于在演示系统中使用,开发时可立即进入状态. 下载地址: http://beansoft.java-cn.org/download/mysql6green.7z 2.24 MB 下载后用 7Zip, ...

    MyEclipse 6 Java EE 开发中文手册-更新到第九章

    作者刘长炯,这电子书还在更新当中,刘长炯的博客是http://www.blogjava.net/beansoft/ 里面还有很多资源,大家喜欢可以上去看看

    MyEclipse 6 Java 开发中文教程2011

    亲爱的读者, 当您掌握了本书的内容后, 应立即掌握以Google来阅读文章提高自己能力的自学之路, 并加入到企业投入到真正企业项目的锻炼中去, 切勿再浪费万元学费去重复学习低端Java培训机构的雷同课程. 请记住, 只有您...

    Java文件处理工具类--FileUtil

    * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from local file. FIXME How to judge UTF-8 and GBK, ...

    MyEclipse+6.0+教程

    MyEclipse+6.0+教程,myeclipse6中文开发教程 官方站点:http://beansoft.blogjava.net/

    devkit:开发人员套件和贡献者材料

    CodeSparta开发套件 开发人员和故障排除工具 要求: 克隆Devkit回购 ...克隆代码斯巴达代码库 ...声明 声明要克隆的分支 将要素分支的名称声明为分支/签出 ./code.yml -e uname=usrbinkat -e token=xxxx -e clone=master...

    LambdaProbe 中文包下载

    推荐下载本站开发的 Java 属性文件编辑器: PropertyEditor.jar 47KB PropertyEditor_src.zip 36KB 截屏: PropertyEditor_screenshotV2-1_1.png (位于http://gro.clinux.org/projects/beansoft/). &lt;br&gt;...

    Tomcat服务器的安装、配置及修改目录.doc

    HYPERLINK"http://www.blogjava.net/beansoft/archive/2007/07/19/131286.html"Tomcat服务器配置、运行、更改目录的整理一、配置Tomcat服务器1)下载并安装对应操作系统上的JDK5或者6HYPERLINK.../opt/jdk15或

    数据库工具类DatabaseUtil.java

    * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * * @author beansoft 日期: 2004年04月 * @version 2.0 */ public class DatabaseUtil { /** 数据库连接 */ ...

    TomcatServerMonitor,tomcat监控程序

    Tomcat 服务器监控软件 1.3 by beansoft@126.com 帮您自动重启无响应的 Tomcat(实际情况哦, 并非每个公司的程序都是健壮的).

Global site tag (gtag.js) - Google Analytics