黑马程序员面试题精编

2024-06-01

黑马程序员面试题精编(共9篇)

黑马程序员面试题精编 篇1

------- android培训、java培训、期待与您交流! ----------

昨天熬到很晚终于把两个面试题给搞定了,代码是一步一步跟着敲得,大概知道怎么回事了,再看两遍应该会更透彻一些,这两个视频中,我认为重要的是面向对象编程的思想,代码知识跟着思想一步一步敲出来的,思路清晰了,代码自然就不是问题了。张老师反复的一句话很重要:谁拥有数据,谁就对外提供操作这些数据的方法。(一定要牢记)刚开始理解的不太深刻,但越来越发现这句话的重要性。我一定要赶上17期的末班车!!

交通灯管理系统

一.需求:

模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:

1、异步随机生成按照各个路线行驶的车辆。

例如:

由南向而来去往北向的车辆 ---- 直行车辆

由西向而来去往南向的车辆 ---- 右转车辆

由东向而来去往南向的车辆 ---- 左转车辆

。。。

2、信号灯忽略黄灯,只考虑红灯和绿灯。

3、应考虑左转车辆控制信号灯,右转车辆不受信号灯控制。

4、具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。

注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。

5、每辆车通过路口时间为1秒(提示:可通过线程Sleep的方式模拟)。

6、随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。

7、不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。

二.画图非常有助于理解和分析问题。图如下:

总共有12条路线,为了统一编程模型,可以假设每条路线都有一个红绿灯对其进行控制,

右转弯的4条路线的控制灯可以假设称为常绿状态,另外,其他的8条线路是两两成对的,可以归为4组,

所以,程序只需考虑图中标注了数字号的4条路线的控制灯的切换顺序,

这4条路线相反方向的路线的控制灯跟随这4条路线切换,不必额外考虑。

三.面向对象的分析与设计

1、每条路线上都会出现多辆车,路线上要随机增加新的车,在灯绿期间还要每秒钟减少一辆车。

(1)、设计一个Road类来表示路线,每个Road对象代表一条路线,总共有12条路线,即系统中总共要产生12个Road实例对象。

(2)、每条路线上随机增加新的车辆,增加到一个集合中保存。

(3)、每条路线每隔一秒都会检查控制本路线的灯是否为绿,是则将本路线保存车的集合中的第一辆车移除,即表示车穿过了路口。

2、每条路线每隔一秒都会检查控制本路线的灯是否为绿,一个灯由绿变红时,应该将下一个方向的灯变绿。

(1)、设计一个Lamp类来表示一个交通灯,每个交通灯都维护一个状态:亮(绿)或不亮(红),每个交通灯要有变亮和变黑的方法,

并且能返回自己的亮黑状态。

(2)、总共有12条路线,所以,系统中总共要产生12个交通灯。右拐弯的路线本来不受灯的控制,

但是为了让程序采用统一的处理方式,故假设出有四个右拐弯的灯,只是这些灯为常亮状态,即永远不变黑。

(3)、除了右拐弯方向的其他8条路线的灯,它们是两两成对的,可以归为4组,所以,在编程处理时,

只要从这4组中各取出一个灯,对这4个灯依次轮询变亮,与这4个灯方向对应的灯则随之一同变化,

因此Lamp类中要有一个变量来记住自己相反方向的灯,在一个Lamp对象的变亮和变黑方法中,将对应方向的灯也变亮和变黑。

每个灯变黑时,都伴随者下一个灯的变亮,Lamp类中还用一个变量来记住自己的下一个灯。

(4)、无论在程序的什么地方去获得某个方向的灯时,每次获得的都是同一个实例对象,所以Lamp类改用枚举来做显然具有很大的方便性,

永远都只有代表12个方向的灯的实例对象。

(5)、设计一个LampController类,它定时让当前的绿灯变红。

3、我们初步设想一下有哪些对象:红绿灯,红绿灯的控制系统,汽车,路线。汽车看到自己所在路线对应的灯绿了就穿过路口吗?

不是,还需要看其前面是否有车,看前面是否有车,该问哪个对象呢?该问路,路中存储着车辆的集合,

显然路上就应该有增加车辆和减少车辆的方法了。再看题目,我们这里并不要体现车辆移动的过程,只是捕捉出车辆穿过路口的过程,

也就是捕捉路上减少一辆车的过程,所以,这个车并不需要单独设计成为一个对象,用一个字符串表示就可以了。

面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。再牢牢掌握几个典型的案例就可以了:

人在黑板上画圆,列车司机紧急刹车,售货员统计收获小票的金额,你把门关上了等。

学员的两个面向对象的面试题,用面向对象的方式设计如下情景。

“两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子”,

“球从一根绳子的一段移动到了另一端”,

四.Road类的编写

1、每个Road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。

2、在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。

3、在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除掉。

4、在讲Road对象的定时器代码时,因为开始阶段还没有设计Lamp类,所以,检查该方向上的灯是否为绿的代码暂时先采用短路方式。

五.Lamp类的编写

1、系统中有12个方向上的灯,在程序的其他地方要根据灯的名称就可以获得对应的灯的实例对象,综合这些因素,

将Lamp类用java5中的枚举形式定义更为简单。

2、每个Lamp对象中的亮黑状态用lighted变量表示,选用S2N、S2W、E2W、E2N这四个方向上的Lamp对象依次轮询变亮,

Lamp对象中还要有一个oppositeLampName变量来表示它们相反方向的灯,再用一个nextLampName变量来表示此灯变亮后的下一个变亮的灯。

这三个变量用构造方法的形式进行赋值,因为枚举元素必须在定义之后引用,所以无法再构造方法中彼此相互引用,

所以,相反方向和下一个方向的灯用字符串形式表示。

3、增加让Lamp变亮和变黑的方法:light和blackOut,对于S2N、S2W、E2W、E2N这四个方向上的Lamp对象,

这两个方法内部要让相反方向的灯随之变亮和变黑,blackOut方法还要让下一个灯变亮。

4、除了S2N、S2W、E2W、E2N这四个方向上的Lamp对象之外,其他方向上的Lamp对象的nextLampName和oppositeLampName属性设置为null即可,

并且S2N、S2W、E2W、E2N这四个方向上的Lamp对象的nextLampName和oppositeLampName属性必须设置为null,

以便防止light和blackOut进入死循环。

六.LampController类的编写

1、整个系统中只能有一套交通灯控制系统,所以,LampController类最好是设计成单例。

2、LampController构造方法中要设定第一个为绿的灯。

3、LampController对象的start方法中将当前灯变绿,然后启动一个定时器,每隔10秒将当前灯变红和将下一个灯变绿。

七.MainClass类的编写

1、用for循环创建出代表12条路线的对象。

2、接着再获得LampController对象并调用其start方法。

3、String [] directions = {“S2N”,“N2S”,“S2W”,“N2E”,“E2W”,“W2E”,

“E2S”,“W2N”,“S2W”,“N2W”,“E2N”,“W2S”};

刚开始把上面的倒数第4个元素写错了(应该写成S2E),所以总是只看到5个方向上有车通过的情况。

八.代码(代码都是自己敲的所以注释自己写的不太专业,只是为了自己理解。。。)

Road类

package com.isoftstone.interview.traffic;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

public class Road {

private Listvechicles = new ArrayList();

private String name = null;

public Road(String name){

this.name = name;

//定义一个线程池

ExecutorService pool = Executors.newSingleThreadExecutor();

//用池来提交任务

pool.execute(new Runnable(){

//启动线程

public void run(){

for(int i=1;i<1000;i++){

try {

//隔多少秒出现一辆车 1-10秒

Thread.sleep((new Random().nextInt(10) + 1) * 1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

//name访问内部类成员变量

vechicles.add(Road.this.name + “_” + i);

}

}

});

//做定时器

ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);

timer.scheduleAtFixedRate(

new Runnable(){

//把集合里的第一辆车移走

public void run(){

//有车

if(vechicles.size(

[黑马程序员_7K面试题]

黑马程序员面试题精编 篇2

但是如果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吗?

当然可以,用名:/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为前缀的文件可以使用

32、对一个JSP页,如果多个客户端同时请求它,同步可能吗?在jsp:useBean语法中使用beanName有何好处?beanName使用Beans.instantiate()初始化Bean33、当我使用时,在浏览器的地址栏没有改变?使用response.sendRedirect(”newURL“)

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?没办法

java程序员面试题 篇3

2、怎么样来捕获数据库中的异常?

3、如何处理网页中的验证信息,如何友好的进行处理?

4、用javaScript实现java中的监听器功能?

5、你对对日外包的看法?

6、数据库连接方式由哪几种?

Jdbc、连接池、hibernate

7、你清楚哪几种设计模式,谈谈各种设计模式的类结构。

8、谈谈jsp和sevlet的区别,以及它们性能上的区别。

jsp是servlet的一种简化,jsp编译后是“类servlet”。servlet 主要是用来处理业务层;

jsp 则是主要负责 表现层。

servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出。Servlet中没有内置对象。Jsp由html代码和jsp标签构成可以方便地编写动态网页,在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。

总之,使用jsp只需要完成程序员需要输出到客户端的内容,至于jsp中的java脚本如果镶嵌到一个类中,由jsp容器完成,而servlet则是个完整的java类,这个类的service方法用于生成对客户端的响应

9、如何来编写存储过程,如何优化存储过程,以及存储过程和TSQL的区别。

10、提供的培训,CMM-5软件开发流程培训、代码编写规范和业务流程培训、对日语的培训。

1、为什么要选择这个行业,和计算机专业的相比有什么优势?

2、Servlet是什么,以及生命周期?

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

3、怎么理解事务?

4、怎么理解MVC?

自己做自己的事情,主要强调分层,5、同时插入大量数据,使用何种方法优化?Batch

6、多个有关系得怎么样操作?

7、你认为你还有什么优点在前面没有提到?

8、对加班的看法?

9、与上级意见不一致时怎么样处理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解团队精神?

你怎样处理学习新技术和项目开发之间的矛盾? 怎样去学习新技术?

作为一个初级程序员怎么样弥补与有经验程序员之间的差距? 你对索引的理解,索引有几种,什么时候用索引? 对Oracle理解?

怎样优化复杂的查询语句? 你对Jdbc理解?

对Finally块的理解和应用? 游标的理解? ResultSet 重载,重写? 签名

EJB的事务,Hibernate的事务? Struts的标签? 重定向和跳转? A、:效率高,速度快

a.地址栏不改变跳转——服务器端跳转,服务器之间内部转,相同的request,可传参;

b.执行到跳转语句后无条件立刻跳转——之后的代码不再被执行;

注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;

c.使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);d.通过传递参数。

e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢

a.地址栏改变跳转——客户端跳转(其中地址可以是任意的)

b.所有代码执行完毕之后再跳转,跳转语句后面的代码还是会执行,除非在其后面加上return(return)需复杂一些。

<% Response.sendRedirect(“aa.jsp”);boolean b = true;

if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>

c.不能保存request属性——地址改变了,客户端跳转,不同的request d.通过对URL地址的重写传递参数:

response.sendRedirect(“responseDemo04.jsp?id=mldn”);

e.地址中的”/”代表是:http://localhost:8080/

下面是两种比较重要的跳转,我还是与上次的一次,把我做的笔记贴出来:24、25、Hibernate的左联结和右连接,缓存,数据加载? 面向对象如何理解?

26、EJB中CMP和BMP,SessionBean的机制?27、28、29、对日外包是否有抵触情绪? 如何减少Servlet的请求? 对设计模式了解多少?作过的项目中用过那些设计模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎样看待团队合作,在团队合作中你扮演什么样的角色,遇到技术难题时怎么解决? Exception的层次结构? EJB对数据库的访问机制? Struts中是否有事务处理? Hibernate的其它功能(除了ORM)? 如何提高数据库中的数据查询效率? 作为项目经理如何对组内成员分工? 描述一下你做过项目的流程。

加班到12点,突然有人来问你技术上的难题,你会如何处理? Oracle的冷备份、热备份 Strurs中怎样实现 Hibernate怎样实现ORM Spring 的事务处理机制

Strurs的验证方式,Javascript的验证的方式

一个是服务器端验证,一个是客户端验证

Struts的工作机制 Delete/trancate的区别

trancate与delete都是删除数据,不同的是trancate是将表的所有数据都删除,而delete可以有选择地删除数据; delete删除数据是记录在日志中的,可以通过其将数据恢复,而trancate则是将整个表截断,其操作是不记录在日志里的。46、47、48、作为项目组长,你遇到的最大问题是什么?如何解决?

Ajax/内嵌框架实现局部刷新,有什么差别?

Exception/Error的区别,在什么情况下可以抛出RuntimeException 父类不同

知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。

在程序运行时候出错而又不是系统原因差生的,一般是由于程序原因产生,比如程序写的不够严谨、完善

典型的RuntimeException

ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化视图(MV)

业务处理模块中,是如何处理事务? Sql语句如何优化 数据库右连接

JDBC的连接关闭在哪?

Finally语句块内

错误处理模块是放在哪个层的。接口能否继承接口。

接口可以继承接口..但是要使用extends~而不是用implements 抽象类能否继承实体类。

抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。

项目中查询时怎么样实现的?

作为项目负责人你是管理这个团队的?

在你做项目过程中遇到些什么问题,是怎么样解决的?

Jquery中的几种选择器:

Javascript如何进行数字和字符串之间的转换?

c#高级程序员面试题 篇4

3.谈一下ASP.NET页面生命周期

4.ASP.NET程序的运行机制。可以从一个页面的请求到返回的角度谈

5.Javascript中类库的制作和调用方法

6.AJAX原理及你所知道和使用过的版本

7.WebService使用的协议及简述使用流程

8.谈一下WebService的安全性及相关技术

9.事务操作的原理及同库事务及跨库事务的思路

10.简述你的一个项目,主要的流程及部署

11.谈一下你对SOA的理解及熟习的SOA架构

12.谈一下你对SaaS的理解

13.你是否在ASP.NET之外还会JAVA、PHP?

14.如果让你设计一个登录模块,你会怎么考虑和制作?

15.如果让你制作日志模块,你会怎么考虑和制作?

16.如果让你制作用户权限模块,你会怎么考虑和制作?

17.如果让你做文件上传模块,你会怎么考虑和制作?如果文件大于1G你会怎么考虑设计?

18.是否了解及使用过WCF、WF、WPF?

19.Web页面的打印及报表的输出思路?

20.报表的制作思路?

21.谈一下你对.Net中垃圾回收的理解?

Java程序员集合框架面试题 篇5

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来装饰一个集合。

黑马程序员面试题精编 篇6

姓名:开始时间:结束时间:

(请将答案写在答题纸上)

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的几种实现方式工厂模式和抽象工厂模式之间的区别项目中使用过什么设计模式?

黑马程序员面试题精编 篇7

2014年2月19日国考公务员中直、国家部委面试题及程序

上午面试题

材料:10分钟阅读一份材料

你所在的乡遭受水灾,王乡长联系政府、找投资商,想带领大家致富,发展大棚蔬菜项目。乡里的致富带头人甲,出资投资乡里的大棚蔬菜项目,但因产量和质量不高,销路不畅,该项目失败,致投资商撤资。王乡长承受着政府、投资商、群众各方面的压力。

1、你觉得蔬菜大棚搞不好的原因是什么?

2、如果让你去找某企业家贾某,让他出资,你怎么说?

3、让你了解一下蔬菜大棚到底能否带动当地发展,你怎么去做?

4、乡亲们觉得乡里搞蔬菜大棚不对路,聚众闹事,你怎么协调?

下午面试题

10分钟阅读一份材料:

主要内容:老龄化导致有很多空巢老人,很多老人因为行动不便等,不出门活动,子女又不在身边,因此精神缺乏慰藉。张晓燕组织了一个“助巢”行动,组织大学生志愿者们上门和空巢老人聊天,做一些简单的生活照料。行动开始后在一段时间内取得了一些成绩,老人们普遍反映不错。但是也出现了一些小问题,有老人当着子女的面夸志愿者而说子女不孝顺。有些老人反映部分志愿者“不耐心”、“不懂事”。部分志愿者觉得老人翻来覆去就是讲一些相同的陈年往事,听多了就烦,打算推出“助巢”行动。

湖南公、检、法、司培训第一品牌

考官读题加思考(共20分钟):

1.针对现在老龄化的趋势,结合材料谈谈你对“助巢”行动的看法。2.针对材料中“助巢”行动遇到志愿者素质不高的问题,如果你是张晓燕,请提出至少三种新颖的活动形式,并就其中的一种谈谈组织的重点是什么。

3.王奶奶的子女因为王奶奶说自己不孝顺,要把志愿者赶出门,从而引起争执,引来邻居围观。如果你是张晓燕,你怎么办?

4.某大学社工系学生会主席觉得活动不顺,想退出“助巢”行动,不再组织大学生参加。你是张晓燕,怎么去说服他?

面试程序 题本一

第一步:给10分钟阅读材料,是关于一个乡发展蔬菜大棚的事情。看材料时没有纸和笔,不允许在上面画,只能看。

第二步:要拿着材料去面试考场。

第三步:向考官问候。考官读导语,说答题时间25分钟,现在开始。可以让考官读两遍题。

第四步:4道题,2全部根据材料出题,全部是解决问题的题,没有综合分析,没有计划组织题,单纯是应急应变和人际关系处理。

第五步:还剩5分钟时,工作人员提醒掌握好时间。我对他笑笑,说谢谢。

黑马程序员面试题精编 篇8

前言

1.背景: 在项目中前段时间遇到一个问题,就是客户要求学生在线填写一些基础信息,保存到数据库的同时,给学生提供下载填写好的信息的pdf文件供下载,一开始我选择用Itext类去解析word文档模板,生成rtf文件,之后将学生填写的信息保存到数据时将数据同时写入到rtf模板中,在进行转为pdf,但是实现之后下载查看发现,中文不会乱码,纯数字也不会乱码,但是中文加数字,和特殊符号会出现名义上的乱码,(其实不是程序的乱码,只是写到word的rtf文件中的数据不会自动识别要用那些字体导致的),上网,翻墙,茶不思饭不想的去找解决办法,终于在我不懈的努力下还是没有解决,故放弃.注:程序员要有一个舍得的心,不能在一个方向上钻牛角尖,跳跳代码同我家,有舍必有得.2.正文: 好了,废话不大多说,上正确的代码和思路(其中有完成之前我所遇到的问题和踩的坑): 材料: itext的jar包包:官网:http://sourceforge.net/projects/itext/files/ Word文档模板-->转为pdf(不会的,网上有教程)Adobe Acrobat软件编辑pdf加载文本域填充数据用(网上有关于此软件的使用教程)

黑马程序员郑州中心 编著

Demo展示: public void test1_1(){

BaseFont bf;

Font font = null;

try {

bf

=

BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”,BaseFont.NOT_EMBEDDED);//创建字体

font = new Font(bf,12);//使用字体

} catch(DocumentException | IOException e){

e.printStackTrace();

}

Document document = new Document();

try {

PdfWriter.getInstance(document,new FileOutputStream(“pdfFolder/2.pdf”));

document.open();

document.add(new Paragraph(“hello word 你好 世界”,font));//引用字体

document.close();

} catch(FileNotFoundException | DocumentException e)

黑马程序员郑州中心 编著

{

System.out.println(“file create exception”);

}

} 上处代码会产生一个pdf文件,如下:

以上掌握之后,只是塞个牙缝,总不能用代码去向pdf中花一些复杂的表格吧,要死人不说,还不能优化和变通,最主要的是不能控制样式.---编辑pdf模板文件:

网上截图(展示利用此软件进行编辑pdf的文本域):

黑马程序员郑州中心 编著

Word模板(部分截图):

黑马程序员郑州中心 编著

代码展示: public void fillTemplate(){//利用模板生成pdf //模板路径

String templatePath = “pdfFolder/template_demo.pdf”;//生成的新文件路径

String newPDFPath = “pdfFolder/newPdf.pdf”;PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try {

out = new FileOutputStream(newPDFPath);//输出流 reader = new PdfReader(templatePath);//读取pdf模板 bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();

String[] str = {“123456789”,“传智播客”,“男”,“1994-00-00”,“110”,“郑州市”};

int i = 0;

java.util.Iterator it = form.getFields().keySet().iterator();while(it.hasNext()){

String name = it.next().toString();

黑马程序员郑州中心 编著

System.out.println(name);form.setField(name, str[i++]);}

stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为true stamper.close();

Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);doc.open();

PdfImportedPage importPage =copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);doc.close();

} catch(IOException e){ System.out.println(1);

} catch(DocumentException e){ System.out.println(2);} }

3.成品代码:

上述代码只是一个小的demo,下面是进行再开发中自己写的符合业务需求

黑马程序员郑州中心 编著 的代码配合上述的word文档模板进行编写,代码改变度不大,自己可以琢磨一下: public void save(Page page,HttpServletResponse

response,httpServletRequest request){ //利用模板生成pdf //模板路径

String templatePath = “项目中的模板路径”;//生成的新文件路径

String newPDFPath = “要生成的文件的存放文件”;PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try { //设置种字体,默认选中的是下面这个,在windows系统中是这样的,在其他的非windows系统中不敢保证:(不想用这种,可以在Adobe Acrobat去设置一个为Adobe 宋体 SL的字体,一下代码可以省略,并且不用在塞入数据是加入font字体,以下代码中的三处①一起使用,一起死亡)

//BaseFont bfChinese = BaseFont.createFont(“STSongStd-Light”, “UniGB-UCS2-H”, false);--①

//Font font = new Font(bfChinese, 10, Font.NORMAL);--①

out = new FileOutputStream(newPDFPath);//输出流

reader = new PdfReader(templatePath);//读取pdf模板

黑马程序员郑州中心 编著

bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);

//读取pdf模板中的文本域们,(此处的用Adobe Acrobat编辑的模板没有截图,仿照上面的demo中的盗图进行对比)

AcroFields form = stamper.getAcroFields();

//form.setField(“studentName”, “font”,null,”数据”);//姓名中文--①

foem.setField(“studentName”, ”数据”);

form.setField(“sex”, “男”);//婚前姓名

stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为true stamper.close();

Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);

//打开模板文档进行开始编辑: doc.open();

PdfImportedPage importPage =copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);//此处一定要关闭,否则有一个进程会一直使用此模板文件,就会造成下载时报异常,此异常自己体会是什么异常: doc.close();

} catch(IOException e){

黑马程序员郑州中心 编著

System.out.println(1);

} catch(DocumentException e){ System.out.println(2);} }

到此处已经完成了此小小功能,希望能帮助一些遇到此问题的人,以下附上本人参考的大神播客地址: http:// http://zhuchengzzcc.iteye.com/blog/1603671

https://jingyan.baidu.com/article/295430f1fb049f0c7e0050d5.html

黑马程序员:经典软文营销20问 篇9

一、迪拜七星级酒店靠软文获得10%的中国客商。

迪拜有个七星级酒店,建筑在一个人工岛上,当时在中国他们没有做任何关于迪拜的广告,只是在《长江商报》和《北京青年报》上名为“全球唯一七星级酒店:24吨黄金装饰”“迪拜七星级酒店六成中国客商,消费能力让人吃惊”的报道,后陆续呗新华网、人民网、搜狐、腾讯等各大门户网站转载,剧统计,二、脑白金软文赢天下。

众所周知,史玉柱曾经用借来的50万做脑白金的产品,然后迅速打开销路,成功扭转了团队面临的严峻考验。而脑白金的成功很大一部分是靠“软文营销”,他们具体的做法是先在一些权威的报社、网站发布关于健康的文章,引起人们的争议,如“人类可以长生不老吗?”“一天不大便等于抽三包烟”“女人四十是花还是豆腐渣”等,软文发布后迅速打开了客户主动找产品的局面。

对于“软文营销”的初入行者,无论有没有经过实践都会存在一些疑问,只有存在疑问才证明是思考过的,只有认真去思考才会有所心得,下面这些问题看你知道答案吗?我相信无论是目前处于一种什么心态,思考完这些问题你一定会对“软文营销”有一个初步的了解。

问:软文营销合法吗?

问:软文营销适合哪些行业? 问:软文营销需要投入多少费用? 问:软文营销的周期是多久? 问:软文推广就是软文营销吗?

问:一些企业做过软文为什么没有效果? 问:软文营销的优势体现在哪些方面? 问:如何培养写软文的能力? 问:软文的字数是多少合适?

问:网络软文的关键词如何寻找和设置?

问:网络软文的长尾关键词如何拓展? 问:如何迅速脱离不能写网络软文的困扰? 问:为什么提倡软硬原创性? 问:论坛软文有哪些特点?

问:论坛软文账号被删被封怎么办? 问:如何选择论坛发布论坛软文? 问:论坛软文常用技巧有哪些?

以上问题答案回帖可见:

问:软文营销合法吗?

答:对于虚假广告我们国家是命令禁止的,进而任何一种营销方式只要是虚假的都是犯法的,正因如此,我们做软文营销要怀有一颗社会责任心,拒绝以欺骗为目的的各类山寨网站做软文营销,软文营销中注意不要多度夸大产品功效、服务水平等,故,软文营销对于软文调研、策划、撰写、发布和评估各个环节都提出了更高的要求。问:软文营销适合哪些行业? 答:几乎适合所有行业。问:软文营销需要投入多少费用?

答:企业开展软文营销应该量力而行,可以根据开展的情况随时灵活调整,建议投入的费用不超过公司销售业绩的5%。问:软文营销的周期是多久?

答:从青泉操作的多个成功案例来看,软文营销的周期一般在一年左右。整体策略是先集中发力,然后根据效果监测和市场评估灵活调整,保持一定的热度即可。当然,如果为了配合某一项活动或者项目的推广,周期可以缩短一些。问:软文推广就是软文营销吗?

答:不是。把“软文推广”看成“软文营销”是许多企业常犯的错误。软文推广实际上是“软文营销”的一个环节。“软文营销”是以营销的理念作为指导,以软文作为具体表现形式的营销方式,其中包括调研、策划、撰写、发布、评估等系列流程。

问:一些企业做过软文为什么没有效果?

答:试想一下,一个企业请一个写手来写了几篇软文,然后随意找了几个平台发布出去了,即使撰写的软文水平很高,那么会有很好的效果吗?效果肯定不会很理想!因为进行“软文营销”一定得严格按照软文营销的流程来进行。问:软文营销的优势体现在哪些方面?

答:首先是速度快,传播范围广。其次是传播更精确。问:如何培养写软文的能力?

答:经常锻炼语言表达能力即可。最简单的办法就是用一句话概括一件事,然后把这件事在用一段话来描述,在从这件事中找出亮点和可塑造的话题,反复锻炼,久而久之自然就连成篇幅了。只要记住“贵在坚持”就行了。问:软文的字数是多少合适?

答:标题的字数控制在16字-20字之间。正文字数控制在500-1500字之间。平面媒体软文根据报纸和媒体的版面来控制字数即可。问:网络软文的关键词如何寻找和设置?

答:关键词的选定要根据用户的喜好,先把自己设定为用户,想想目标用户会搜索什么?也可以列出一些让老客户给些建议,当然一定要注意,软文关键词是否和文章能融合在一起。问:网络软文的长尾关键词如何拓展? 答:1.加入产品的质地、特点和功能。2.增加应用领域和地域。

3.增加商业模式、企业性质和销售服务模式。4.利用网民搜索意图。

问:如何迅速脱离不能写网络软文的困扰?

答:每天坚持写一点,一周就会有效果,先标题开始练习,在到段落练习,再到结尾练习。

也可以从最容易的软文表现形式开始练习,如访谈式和观点式。问:为什么提倡软硬原创性?

答:原创不仅读者喜欢,搜索引擎更喜欢,软文营销加之搜索引擎的帮助效果会事半功倍。问:论坛软文有哪些特点?

答:论坛软文应该具备如下三个特点? 第一:足够诱惑力的标题。第二:引人入胜的开头。

第三:开放式的结尾,一定给会员留下可以互动的悬念。问:论坛软文账号被删被封怎么办?

答:选择好论坛后,先浏览公告板块,了解论坛管理规则和管理思路,尽量去遵守这些规则和要求,至少注册4个论坛账号。问:如何选择论坛发布论坛软文?

答:选择精准度高、人气旺盛、活跃性好及粘度高的论坛。具体来说选择论坛可以从用户数、在线用户数、热门板块文章的浏览量和回帖量来分析。问:论坛软文常用技巧有哪些?

上一篇:阶段测评下一篇:培训会议方案