程序员面试300题(精选9篇)
但是如果data.inc中包含JSP CODE,我们可以使用:<%@include file=“data.inc”%>
2、如何执行一个线程安全的JSP?只需增加如下指令
<%@ page isThreadSafe=“false” %>
3、JSP如何处理HTML FORM中的数据?通过内置的request对象即可,如下:<%
String item = request.getParameter(“item”);int howMany = new
Integer(request.getParameter(“units”)).intValue();%>
4、在JSP如何包含一个静态文件?
静态包含如下:<%@ include file=“copyright.html” %>动态包含如下:
5、在JSP中如何使用注释?主要有四种方法:1。<%– 与 –%> 2。// 3。/**与**/ 4。
6、在JSP中如何执行浏览重定向?使用如下方式即可:
response.sendRedirect(“");
也能物理地改变HTTP HEADER属性,如下:<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn=”/newpath/index.html“;response.setHeader(”Location“,newLocn);%>
7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?
把如下脚本加入到JSP文件的开始即可:<%
response.setHeader(”Cache-Control“,”no-store“);//HTTP 1.1response.setHeader(”Pragma“,”no-cache“);//HTTP 1.0response.setDateHeader(”Expires“, 0);//prevents caching at the proxy server%>
8、在JSP中如何设置COOKIE?
COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置:<%
Cookie mycookie = new Cookie(”aName“,”aValue“);response.addCookie(mycookie);
%>
9、在JSP中如何删除一个COOKIE?<%
Cookie killMyCookie = new Cookie(”mycookie“, null);killMyCookie.setMaxAge(0);killMyCookie.setPath(”/“);response.addCookie(killMyCookie);%>
10、在一个JSP的请求处理中如何停止JSP的执行如下例:<%
if(request.getParameter(”wen“)!= null){// do something} else {return;}%>
11、在JSP中如何定义方法
你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。如下:<%!
public String howBadFrom(HttpServletRequest req){HttpSession ses = req.getSession();...return req.getRemoteHost();}%><%
out.print(”in general,lao lee is not baddie “);%>
<%= howBadFrom(request)%>
12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪
使用URL重写即可,如下:hello1.jsp
<%@ page session=”true“ %><%
Integer num = new Integer(100);session.putValue(”num“,num);
String url =response.encodeURL(”hello2.jsp“);%>
>hello2.jsphello2.jsp
<%@ page session=”true“ %><%
Integer i=(Integer)session.getValue(”num“);out.println(”Num value in session is “+i.intValue());%>
13、在JSP中能发送EMAIL吗
可以使用SUN的专用包:sun.net.smtp包。如下脚本使用
SmtpClient类发送EMAIL。
<%@ page import=”sun.net.smtp.SmtpClient, java.io.*“ %><%
String from=”ybwen@sina.com“;
String to=”hewenjun@yeah.net, lei@who.com.cn“;try{
SmtpClient client = new SmtpClient(”mail.xxxxx.xxx“);client.from(from);client.to(to);
PrintStream message = client.startMessage();message.println(”To: “ + to);
message.println(”Subject: Sending email from JSP!“);message.println(”This was sent from a JSP page!“);message.println();
message.println(”Cool!:-)“);message.println();
message.println(”Good Boy“);message.println(”Im in genius.com“);message.println();client.closeServer();}
catch(IOException e){
System.out.println(”ERROR SENDING EMAIL:“+e);}%>
14、在SERVLET中我能调用一个JSP错误页吗
当然没问题,如下展示了如何在一个SERVLET控制逻辑单元内调用一个JSP错误页面。
HttpServletResponse response, String errorPageURL,Throwable e)
throws ServletException, IOException {getServletConfig().getServletContext().getRequestDispatcher(errorPageURL).forward(request,response);}
public void doPost(HttpServletRequest request,HttpServletResponse response){try {
// do something
} catch(Exception ex){try {
sendErrorRedirect(request,response,”/jsp/MyErrorPage.jsp“,ex);
} catch(Exception e){e.printStackTrace();} } }
15、JSP和APPLET如何通讯
JSP如何与EJB SessionBean通讯下面的代码段作了很好的示范<%@ page import=”javax.naming.*, javax.rmi.PortableRemoteObject,foo.AccountHome, foo.Account“ %><%!
//定义一个对SessionBeanHome接口实例的全局引用AccountHome accHome=null;
public void jspInit(){//获得Home接口实例
InitialContext cntxt = new InitialContext();
Object ref= cntxt.lookup(”java:comp/env/ejb/AccountEJB“);accHome =
(AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);}%><%
//实例化SessionBean
Account acct = accHome.create();//调用远程方法acct.doWhatever(...);// 如此等等%>
16、当我使用一个结果集时,如何防止字段为”null“的字域显示在我的HTML输入文本域中?
可以定义一个简单的函数来达到目的,如下:String blanknull(String s){return(s == null)? ”“ : s;}
然后在JSP的FORM中,可以这样使用
“>
17、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)?现提供两个解决方案:A:使用HTTP,B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如:
response.setContentType(”application/x-msword“);然后想输出缓冲中写一些东东即可。
18、使用useBean标志初始化BEAN时如何接受初始化参数使用如下两标签即可:
protected void sendErrorRedirect(HttpServletRequest <%!
%>
19、使用JSP如何获得客户浏览器的信息?使用request.getHeader(String)即可20、能象调用子程序一样调用JSP吗?
当然可以,用
32、对一个JSP页,如果多个客户端同时请求它,同步可能吗?在jsp:useBean语法中使用beanName有何好处?beanName使用Beans.instantiate()初始化Bean33、当我使用
21、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS?
<%@include file=”abc.jsp“%>与
前一个为静态包含,而后一个为动态包含
22、JSP的缺点?
1。对JAVA程序进行调试没有好东东
2。因大多数的servlet引擎不支持connection pooling3。Servlet引擎没有标准4。JSP与其它脚本语言的交互
23、JSP能进行递归调用吗?当然可以,如对form的提交给本页
34、如何实现JSP的国际化?
为各种版本提供resource bundles属性文件即可
25、在JSP中如何写文本文件?使用PrintWriter对象,如:<%@ page import=”java.io.*“ %><%
String str = ”print me“;
String nameOfTextFile = ”/usr/anil/imp.txt“;try {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));pw.println(str);pw.close();
} catch(IOException e){out.println(e.getMessage());}%>
26、如何在JSP中包括绝对路径文件?使用URLConnection即可。
27、在servlets和JSP之间能共享session对象吗?当然可以,HttpSession session = request.getSession(true);session.putValue(”variable“,”value");
28、JavaScript的变量能复制到JSP的SESSION中吗?
29、如何设置cookie在某一时间后过期?用Cookie.setMaxAge(int)30、如何获得当前的sessions数?
可以使用HttpSessionBindingListeners来跟踪
31、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗?
当然可以,可以为你的JSP文件定义一个别
34、如何转换JSP 0.9版本的文件到JSP1.1?可使用sed/awk即可
35、使用JSP能设置HTML FORM中输入域的焦点,不用JavaScript?没办法
一、选择题
1、下列不属于PHP的开始结束标记的是:()
A、
B、?>
C、<%%>
D、<>
2、下列程序的输出结果为()
function test($a){
$a=’456’;
}
$a=’123’;
test($a);
echo $a++;
?>
A、456
B、123
C、124
D、会报错
4、下列代码的输出结果为()
function test($i)
{
return++$i+5;
}
echo test(1);
?>
A、6
B、7
C、8
D、空
5、下列代码的输出结果为()
$a=’123’;
$b=&$a;
$a=’789’;
$b=’456’;
echo $a;
?>
A、123
B、456
C、789
D、空
二、简答题:
1、试写一个PHP脚本对数组进行排序,要求将数字数组中所有奇数放在左边,0放在中间,偶数放在右
边。如数组:array(23, 94, 0, 2, 56, 10, 77, 231, 75, 48)
2、表uesr,有如下几个字段:id,username,userpwd,regtime。
(1)、试写出查询该表所有记录的sql语句
(2)、要将id为5的记录中,username字段的值更新为“小王”,请写出sql语句
(3)、要删除id为10的记录,请写出sql语句
(4)、现在要新增一条记录。username的值为:小李;userpwd的值为:123456;regtime的值为:2012-09-01。请写出sql语句
3、试写一个PHP函数遍历一个文件夹【注:只需输出该目录的文件和子目录,无须对子目录再进行遍历】
4、请根据你的理解设计一个站内信系统的数据库,并简要说明字段意义和脚本实现细节
5、请使用PHP写一个文件上传脚本,要求只能上传gif/jpeg图像,并且图像大小不能超过1024KB。
三、附加题
2008-06-12 10:43
1.客服端调用EJB对象的几个基本步骤
设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其业务方法。
2.如何给weblogic指定大小的内存?
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m-Xmx200m,可以调整最小内存为32M,最大200M
3.如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。
4.如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.5.在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或
连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
6.说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp
放入何目录下,然的在浏览器上就可打入 http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?
Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
7.在weblogic中发布ejb需涉及到哪些配置文件
不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP
weblogic-cmp-rdbms-jar.xml实体Bean一般还需要
8.如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配
置
缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。
9.如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB
10.CORBA是什么?用途是什么?
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织(Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。
11.说说你所熟悉或听说过的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架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。
12.说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。
13.Servlet执行时一般实现哪几个方法?
public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)public void destroy()
14.j2ee常用的设计模式?说明工厂模式。
Java中的23种设计模式: Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
15.EJB需直接实现它的业务接口或Home接口吗,请简述理由。
1、什么是Java集合API
Java集合框架API是用来表示和操作集合的统一框架,它包含接口、实现类、以及帮助程序员完成一些编程的算法。简言之,API在上层完成以下几件事:
● 编程更加省力,提高城程序速度和代码质量
● 非关联的API提高互操作性
● 节省学习使用新API成本
● 节省设计新API的时间
● 鼓励、促进软件重用
具体来说,有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不是真正的集合。
2、什么是Iterator
一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。
3、Iterator与ListIterator有什么区别?
Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。
4、什么是HaspMap和Map?
Map是接口,Java 集合框架中一部分,用于存储键值对,HashMap是用哈希算法实现Map的类。
5、HashMap与HashTable有什么区别?对比Hashtable VS HashMap
两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间有一下区别: ● HashMap和Hashtable大致是等同的,除了非同步和空值(HashMap允许null值作为key和value,而Hashtable不可以)。
● HashMap没法保证映射的顺序一直不变,但是作为HashMap的子类LinkedHashMap,如果想要预知的顺序迭代(默认按照插入顺序),你可以很轻易的置换为HashMap,如果使用Hashtable就没那么容易了。
● HashMap不是同步的,而Hashtable是同步的。
● 迭代HashMap采用快速失败机制,而Hashtable不是,所以这是设计的考虑点。
6、在Hashtable上下文中同步是什么意思?
同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。
7、什么叫做快速失败特性
从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。一个快速失败系统设计用来即时报告可能会导致失败的任何故障情况,它通常用来停止正常的操作而不是尝试继续做可能有缺陷的工作。当有问题发生时,快速失败系统即时可见地发错错误告警。在Java中,快速失败与iterators有关。如果一个iterator在集合对象上创建了,其它线程欲“结构化”的修改该集合对象,并发修改异常(ConcurrentModificationException)抛出。
8、怎样使Hashmap同步?
HashMap可以通过Map m = Collections.synchronizedMap(hashMap)来达到同步的效果。
9、什么时候使用Hashtable,什么时候使用HashMap
基本的不同点是Hashtable同步HashMap不是的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable,反之使用HashMap。非线程安全的数据结构能带来更好的性能。
如果在将来有一种可能—你需要按顺序获得键值对的方案时,HashMap是一个很好的选择,因为有HashMap的一个子类LinkedHashMap。所以如果你想可预测的按顺序迭代(默认按插入的顺序),你可以很方便用LinkedHashMap替换HashMap。反观要是使用的Hashtable就没那么简单了。同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。
10、为什么Vector类认为是废弃的或者是非官方地不推荐使用?或者说为什么我们应该一直使用ArrayList而不是Vector
你应该使用ArrayList而不是Vector是因为默认情况下你是非同步访问的,Vector同步了每个方法,你几乎从不要那样做,通常有想要同步的是整个操作序列。同步单个的操作也不安全(如果你迭代一个Vector,你还是要加锁,以避免其它线程在同一时刻改变集合).而且效率更慢。当然同样有锁的开销即使你不需要,这是个很糟糕的方法在默认情况下同步访问。你可以一直使用Collections.sychronizedList来装饰一个集合。
姓名:开始时间:结束时间:
(请将答案写在答题纸上)
java 基础
1StringBuffer的实现方式,容量如何扩充
2了解JVM启动参数吗?-verbose-Xms-Xmx的意思是什么 ?3
3ClassLoader的功能和工作模式
4jvm gc 如何判断对象是否需要回收,有哪几种方式?
5reader和inputstream区别?3?
6==和equals的区别? 3
7hashCode的作用,Hashmap理解,如果在hashCode中返回常量1,会有什么结果?3
8char型变量中能不能存贮一个中文汉字?
9interface 和 abstrat class的区别
10多线程 同步的原理
11解释是一下什么是线程安全?举例说明一个线程不安全的例子。解释Synchronized关键字的作用
12说出数据连接池的工作机制是什么?解决什么问题50%
13了解过哪些JDK5的新特性JDK版本: Integer i = 5;举例描述下相应的特性?java序列化
算法:排序算法有哪些,优缺点ArrayList LinkedList HashMap,区别递归算法使用。
架构:ibatis:sql语句中用>特殊符号,怎么办Mvc的概念谈一下自己最熟悉的web框架Spring的核心理念是什么?Spring BeanFactory,FactoryBean的区别?apache,tomcat和weblogic的最根本区别
数据库乐观锁,悲观锁?sql注入原理?数据库操作的性能瓶颈通常在哪里, 1000万级别访问,在数据库和java程序上考虑哪些来进行性能优化Statement和PreparedStatement之间的区别?数据库数据文件和索引为什么需要收缩,如何实现收缩?性能方面。多数结合多线程、同步来问,以提取一张大表数据来作为例子 解决性能的方法表关联时,内连接,左连接,右连接怎么理解用JDBC定义一个带事务性的数据库操作主要步骤是什么?表设计的时候会不会出现冗余?数据分页怎么处理?
web开发http get和post区别在web开发中,用redirect与forward做跳转有什么区别servlet中,如何定制session的过期时间,filter的应用场景有哪些 4 JSP的include有几种实现,并说明request的SetAttribute,和setparam区别?tcp,udp区别
设计模式Singleton的几种实现方式工厂模式和抽象工厂模式之间的区别项目中使用过什么设计模式?
发表时间:2009-09-04 09:38:24.0 作者:CBISMB编辑 来源:中小企业IT采购
华为
1)笔试可以选择JAVA和C++。
其中一个编程题:用数组实现栈,首席技术官(cto.icxo.com)并且当栈空间满时,栈空间增加一倍。
2)面试:IT类或者管理类。
一面:技术面试,40分钟,问的很细,UML,单点登录,J2EE
二面:综合面试,20分钟一个项目完整的经历
三面:HR,职业规划,优势与劣势,期望工资与工作地点。
四面:决策层面试。一般是总裁面试。但是根据第一印象刷人的情况很常见,很残酷。
腾讯-移动kjava开发
1)笔试:C++,基础题目与程序员考试水平相当。
附加题:
1.有10亿个浮点数,从中找出1万个最大的数。写一个高性能的算法
2.Unix后台进程的实现
3.MFC的多文档模板的加载
4.数据库SQL语句查询
2)面试
技术1面:一般有很多面试官,你个人可以选择其中的一个。问的问题,是否接触过DirectX技术?2D,3D引擎原理?然后问一个很基础的问题,写一个程序:从双向循环链表中删除一个节点。
广东北电-研发
1)笔试C++:考的比较难,一共4题,1个小时完成:
1.英译汉
2.中序遍历一个二叉树,不能用递归
3.双向冒泡程序改错--3个错误
4.回答程序所完成的功能-共5问题目很长,时间来不及。最好提前准备一下。
以下是一些中大考试题目:
1.IS95标准,关于CDMA发展。汉译英
2.编程题
输入年月日格式yyyymmdd,判断是否是周末,只要求对2005年判断。
3.分析题:有关移动通信编码,位图什么的,好像是输入一串数据,根据题目比编码方法,写出编码后结果,好像没多少人会做。
2)面试
1.多进程与多线程的区别与通信
2.测试方法
3.C++中的多态在C中如何实现
神州数码-开发工程师
1)笔试:综合能力测试(公务员题目)+专业测试(J2EE/C++/数据库)
2)面试:没有问技术问题
1面:HR面,半结构化测试,主要是性格测试
2面:业务面,没有问任何技术问题,就是职业规划和情景分析
立信-从兴电子
笔试:C++,考的n基础,但是不是很好做
1)C++中引用编译过的C代码为什么要用“extern c”
2)类与struct的区别
3)数据库建表的SQL语句,注意主键与外键是如何建立的
4)文件的外排序,考虑到CPU,内存,硬盘空间等。
面试:
一面:技术+HR,很容易应付
二面:通知是综合面,还没有去面,应该是谈价钱
招商银行研发中心
笔试:IQ测试+专业测试(c++,java,delphi,html都有),考的都是很基础的,但是不容易对付
面试:在笔试的过程中进行,就问了一下项目,工作流,专业课程与成绩。
金蝶软件
笔试:综合能力测试(公务员题目)+专业测试(java+数据库+UML)
1.SWING中组件布局有哪几种方式
2.写实例代码说明多态的实现
3.数据库SQL语句
4.基础题目考的很全,国际化,数据库索引,xml shema,ejb,数据结构等等
面试:
1)HR:问了专业,成绩,期望工作城市。
2)技术面:问其中一个项目,UML用在项目的哪些方面,有没有用到数据库索引,数据库实体建模是用什么工具
群硕
笔试:英文,不难做,JAVA基础知识
面试:
一面:技术面,MVC架构,存储过程,JDBC,JMX与JMS的区别,Servlet的运行过程与线程安全性。net自动装箱与拆箱是否可逆,ADO与ADO.NET的区别
二面:HR面,职业规划,期望工资,双选的准则
康拓普电力自动化
康拓普公司
笔试:IQ测试+专业测试(java):
考的非常基础:人民币数字转化为文字,如1235,输出一千二百三十五元
第一,谈谈final,finally,finalize的区别。
Fanal 修饰符 可以修饰类,属性和方法。被修饰的类不可以派生子类,不能被作为父类被继承。它修饰的属性和方法必须在声明的时候给定初值,以后不能修改。
Fanaly 在捕获异常的时候最后执行的语句,可以不写。
Fanalize 是Object类中定义的,所以所有的类都继承了它,这个方法是垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类,也可以实现其他接口。匿名内部类在swing中比较常见。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
静态内部类,普通的内部类
静态内部类是不能直接调用外部的类,可以通过外部类的引用来调用
非静态类inner class 可以自由的引用外部类的属性和方法,但是它与一个实例绑定在了一起,不可以定义静态的属性、方法。
第四,&和&&的区别。
&和&&都是java中的逻辑运算符
&两边的表达式的结果都是true的,整个的运算结果才是true,只要有任意一个是false,其结果就是false的
&&是短路与,既第一个表达式是false 就不用判断第二个表达式,结果就是false
第五,HashMap和Hashtable的区别。
它们实现了将key 映射到 value的对象,键和值都是对象,不能有重复的键,可以有重复的值
Hashtable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现 HashMap可以定义null key 和null 的value,而HashTable不可以
HashMap是线程不安全的,而HashTable线程安全,所以HashMap的效率比HashTable的要高些
第六,Collection 和 Collections的区别。
Collection是所有集合的父接口。
List 和set是Collection的子接口
Collections是操作有关集合的工具类。
第七,什么时候用assert.断言 Debug模式下才有效
第八,GC是什么? 为什么要有GC?
GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
第九,String s = new String(“xyz”);创建了几个String Object?
2个,一个是引用对象s 还有字符串对象xyz
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
-11 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
S1 =s1+1 会出错,因为1默认为int型。相加会出错。
S1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符重载,所以是不一样的。
第十二,sleep()和 wait()有什么区别?
Sleep()是线程的休眠,方法里边要有毫秒值。意思是过了多少毫秒后会执行一次。不释放系统资源
Wait()是线程的等待,必须唤醒notify才能够执行,不占用系统的资源
第十三,Java有没有goto?
没有,不过它是java语言中的保留字
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组中没有length()方法,有length属性。
String有length()方法,字符串的长度。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载 重载的方法名字必须相同,参数表不同,可以改变返回类型
Override 是重写 重写是子类继承父类的虚方法重新定义参数表要相同,返回类型也要和父类相同。
Overloaded可以改变返回类型
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
set里的元素是不能重复的,用iterator()方法来区分重复与否。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
第十八,error和exception有什么区别?
Error 是编辑时出现的错误,不能通过编译,也就是不能生成.class的文件
Exception是异常,异常是可以避免和捕获的,程序能够通过编译。第十九,List,Set,Map是否继承自Collection接口?
List set
是继承Collection 接口的。Map不是 第二十,abstract class和interface有什么区别?
abstract class是抽象类,可以定义普通方法,也可以定义只有方法名,没有实现的方法。抽象类是被继承的 interface是接口,所有的方法都是抽象方法。实现接口就是重写接口里的所有方法。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
Abstract和method是不可以static的,因为抽象类是要被继承的。
native是映射本地方法,不存在被子类继承,所以也不能与abstract混用
抽象类没有具体的实现,觉得定义成synchronized是没有必要的,修饰具体的方法
才有意义
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口,extends
抽象类可以实现接口。
抽象类是可以继承实体类的,但实体类中要有明确的构造函数。第二十三,启动一个线程是用run()还是start()?
启动线程要是start()方法。
第二十四,构造器Constructor是否可被override?
构造器不能被重写的,可以重载。第二十五,是否可以继承String类?
不能,String是final的。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
如果其他的方法不是同步的,是可以进去的。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
finally里的代码会执行,在return之前执行
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
2<<3 第十七,给我一个你最常见到的runtime exception.NullPointerException 空指针
ArrayIndexOutOfBoundException
数组下标越界
ClassCastException 造型异常 第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
这是对的,equals方法是比较两个值。而不是内存地址。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
Public class Singleton{ Private static Singleton s = new Singleton();Private Singleton(){ } Public static Singleton getInstance(){ Return s;}
如果对方问到的某个问题你不是很熟悉,有一段沉默的话,请不要尴尬和紧张。面试过程中允许沉默,你完全可以用这段时间来思考。可以用呼吸调整自己的状态。如果过于紧张,可以直接告诉对方。表达出自己的紧张情绪,能够起到很好的舒缓作用。而且紧张本来也是正常的表现。
在面试过程中,应聘者也保有自己的权利。比如面试时间过长,从上午一直拖到下午,而你未进午餐就被要求开始下午的面试的话,你完全可以要求进餐后再开始。面试是一个双方信息沟通及达成合作目的的会谈,是一个双方彼此考量和认知的过程。不要忽略自己应有的权利。
面谈后,如果对方觉得你技术、沟通、态度各方面都不错,也许会增加一个素质测评确认一下对你的判断。
素质测评一般考查性格、能力、职业等方面,以判断你的价值观是否与企业相符。我们不需要去猜测这些题目到底要考查些什么,凭着你的第一感觉填写就可以了。在几十道甚至上百道题目中,都有几道题是从不同角度考查一个方向的,凭猜测答题反而会前后有悖。
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。
1.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?
两个
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数最接近的长整数,参数加1/2后求其floor.第十一,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;(可以正确编译)
第十二,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。
参考如下:
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个 有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。< < 3
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
} }
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if(instance==null)
instance=new Singleton();
return instance;} }
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
其中也存在一些问题,下面补充一下.希望大家继续补充
1.最好介绍一下final修饰变量的情形(分开说明基本类型变量和引用类型变量)。
2.不知道如何描述比较好,匿名内部类本身是一个实现了特定接口或继承了其他类的类。
3.非静态类不能有static的方法。参考一下java collections framework的代码,还能说出很多东西来。
4.&既是位运算符,也是逻辑操作符。
&和&&都是逻辑运算符,它们的区别是,&&进行短路计算。
6.可以补充一下,参考文档。
11.说一下具体的原因可能更好。
13.java有goto这个keyword,不过还没有使用。
15.overload和多态没有任何关系。多态是面向对象的基本特征,是和继承、overriding相关的。原来以为把overload当作多态的一种是从C++来的,后来翻了基本c++的经典的书,也强调多态只是和继承,虚函数,overriding相关,所以不知道这个错误思想从哪来的了.16.public interface Set
看文档就是了.22.“抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。”什么意思?谁规定的?
27.这个比较复杂,例如
public class Main {
public static void main(String[] args){
System.out.println(test());}
public static boolean test(){
boolean b = false;
try {
return b = 4 > 3;
} finally {
System.out.println(b);
//return false;} } }
这个例子中可以看出,return后面的表达式已经计算了,感觉return语句这里被挂起了,如果finally中没有return,这个return就返回.如果finally也有return,那么就是finally中的return返回了.29.碰上不守规矩的程序员谁也没办法.31.还有枚举呢
【程序员面试300题】推荐阅读:
java程序员面试题(笔试&面试题)10-07
程序员的面试自我介绍06-09
java程序员面试问题10-15
程序员面试一分钟自我介绍05-26
黑马程序员:IOS面试宝典之c语言07-20
面试的程序及技巧讲述05-28
c语言程序设计基础题10-28
程序员试卷二06-11
程序员辞职申请10-06
实习程序员简历10-16