软件工程师面试题含答案.docx

上传人:b****5 文档编号:28456553 上传时间:2023-07-13 格式:DOCX 页数:25 大小:28.74KB
下载 相关 举报
软件工程师面试题含答案.docx_第1页
第1页 / 共25页
软件工程师面试题含答案.docx_第2页
第2页 / 共25页
软件工程师面试题含答案.docx_第3页
第3页 / 共25页
软件工程师面试题含答案.docx_第4页
第4页 / 共25页
软件工程师面试题含答案.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

软件工程师面试题含答案.docx

《软件工程师面试题含答案.docx》由会员分享,可在线阅读,更多相关《软件工程师面试题含答案.docx(25页珍藏版)》请在冰豆网上搜索。

软件工程师面试题含答案.docx

软件工程师面试题含答案

交换机是一种存储转发设备。

以太网交换机采用存储转发(Store-Forward)技术或直通(Cut-Through)技术来实现信息帧的转发,也称为交换式集线器。

交换机和网桥的不同在于:

交换机端口数较多,数据传输效率高,转发延迟很小,吞吐量大,丢失率低,网络整体性能增强,远远超过了普通网桥连接网络时的转发性能。

一般用于互连相同类型的局域网,如以太网与以太网的互连。

[1] 

一、你对MVC的理解,MVC有什么优缺点?

结合Struts,说明在一个Web应用如何去使用?

答:

MVC设计模式(应用观察者模式的框架模式)

M:

Model(Businessprocesslayer),模型,操作数据的业务处理层,并独立于表现层(Independentofpresentation)。

V:

View(Presentationlayer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。

C:

Controller(Controllayer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图

MVC框架的一种实现模型

模型二(Servlet-centric):

JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。

StrutsMVC框架(Webapplicationframeworks)

Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。

Struts提供了一些组件使用MVC开发应用程序:

Model:

Struts没有提供model类。

这个商业逻辑必须由Web应用程序的开发者以JavaBean或EJB的形式提供

View:

Struts提供了actionform创建formbean,用于在controller和view间传输数据。

此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。

Controller:

Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Actionform,然后调用一个Action控制器。

Action控制器中提供了model的逻辑接口。

二、什么是WebService?

答:

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。

WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。

WebService=WSDL+SOAP+UDDI(webservice的注册)

Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。

WebService是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。

WebService的优点

(1)可以让异构的程序相互访问(跨平台)

(2)松耦合

(3)基于标准协议(通用语言,允许其他程序访问)

WebService的基本原理

(1)ServiceProvider采用WSDL描述服务

(2)ServiceProvider采用UDDI将服务的描述文件发布到UDDI服务器(Registerserver)

(3)ServiceRequestor在UDDI服务器上查询并获取WSDL文件

(4)Servicerequestor将请求绑定到SOAP,并访问相应的服务。

三、什么是中间件?

中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。

中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。

顾名思义,中间件处于操作系统软件与用户的应用软件的中间。

中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

  在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

分类:

数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。

举例:

1,RMI(RemoteMethodInvocations,远程调用)

2,LoadBalancing(负载均衡,将访问负荷分散到各个服务器中)

3,TransparentFail-over(透明的故障切换)

4,Clustering(集群,用多个小的服务器代替大型机)

5,Back-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统)

6,Transaction事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务)

7,DynamicRedeployment(动态重新部署,在不停止原系统的情况下,部署新的系统)

8,SystemManagement(系统管理)

9,Threading(多线程处理)

10,Message-orientedMiddleware面向消息的中间件(异步的调用编程)

11,ComponentLifeCycle(组件的生命周期管理)

12,Resourcepooling(资源池)

13,Security(安全)

14,Caching(缓存)

四、什么是典型的软件三层结构?

软件设计为什么要分层?

软件分层有什么好处?

答:

(1)Presentationlayer(表示层)

(1)表示逻辑(生成界面代码)

(2)接收请求

(3)处理业务层抛出的异常

(4)负责规则验证(数据格式,数据非空等)

(5)流程控制

(2)Servicelayer(服务层/业务层)

(1)封装业务逻辑处理,并且对外暴露接口

(2)负责事务,安全等服务

(3)Persistencelayer(持久层)

(1)封装数据访问的逻辑,暴露接口

(2)提供方便的数据访问的方案(查询语言,API,映射机制等)

Domainlayer(域层)

(1)业务对象以及业务关系的表示

(2)处理简单的业务逻辑

(3)域层的对象可以穿越表示层,业务层,持久层

软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。

五、什么是OOP?

OOP相对于面向过程编程有哪些优点?

OOP,Object-OrientedProgramming,面向对象编程不同于面向过程编程:

(1)OOP关注对象和角色,也就是事物的本质

1)OOP把客观世界中的对象抽象成对应的类;

2)通过类构造实例;

3)通过依赖、继承、实现等形式建立对象间的通信关系

(2)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码

(3)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型

六、谈谈Overload和Override的区别。

答:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。

子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型。

七、谈谈HashMap和Hashtable的区别。

答:

HashMap是轻量级的(线程不安全的,效率高的)集合,Hashtable是重量级的(线程安全的,效率低的)集合。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。

它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。

它也比HashMap慢,因为它是同步的。

八、请问abstractclass和interface有什么区别?

答:

1)接口没有任何的实现,而抽象类它可以有部分的实现也可以没有;

2)如果需要复用或者共享部分代码,应该用抽象类而不是接口;

3)继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Java的单继承是接口产生的根本原因)接口是一种抽象的第三方规范,跟对象没什么直接关系。

九、请问软件开发中的设计模式你会使用哪些?

答:

我熟悉的设计模式有单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

Singleton模式一般形式:

定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

十、类的核心特性有哪些?

类具有封装性、继承性和多态性。

封装性:

类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

继承性:

类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。

多态性:

类的多态性提供类中方法执行的多样性,多态性有两种表现形式:

重载和覆盖。

十一、请问类与对象有什么区别?

类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。

对象

在面向对象概念中,对象(Object)是类的实例(instance)。

对象与类的关系就像变量与数据类型的关系一样。

十二、写出生产者消费者模型的实现

十三、用软件工程和Java来叙述购物车(shoppingcart)系统实现

十四、文件系统的几个类:

FileInputStream、FileOutputStream、FileReader、FileWriter的区别

十五、请写出JavaAPI中最常用的五个包,并且各举两个类加以说明。

十六、请问你在“电信运营支撑系统”中遇到了哪些问题?

你是怎么解决的?

做这个项目你最大的收获是什么?

十七、请说出几个常用的异常类

答:

NullpointException(空指针异常)

ClassNotFoundException(类找不到异常)

ClassCastException(类型转换异常)

IllegalArgumentException(非法参数异常)

ArithmeticException(算术异常)

NumberFormatException(数据格式异常)

IndexOutOfBoundsException(数组下标越界异常)

IllegalStateException(非法语句异常)

十八、什么是进程和线程?

两者的区别是什么?

十九、请简要描述一下你做的ShoppingCart项目。

二十、请问网络7层协议,tcp/ip4层协议是什么?

二十一、Java面向对象的四大特点

二十二、public,private,protected,default访问权限(可见性)

答:

public:

全局可见

protected:

继承体系结构之间可见

default(或不写):

同包可见

private:

本类可见。

二十三、名词解释

CRM

[CustomerRelationshipManagement,客户关系管理]

ERP

[EnterpriseResourcePlanning,企业资源规划]

OSS

[OperationSupportSystem,运营支撑系统]

BSS

[BusinessSupportSystem,数据定义语言]

BOSS

[BusinessOperationSupportSystem,数据定义语言]

OA

[OfficeAutomatization,办公自动化]

HTTP

OOP

SOA

GUI

DDL

[DataDefinitionLanguage,数据定义语言]

DML

[DataManipulationLanguage,数据操作语言]

WYSIWYG

所见即所得[WhatYouSeeisWhatYouGet]

CMP

CMT

B2B

C2C

B2C

IDE

DOM

Client/Server

CMM

ORM

MIS

MVC

MVC是Model-View-Controller的简写。

"Model"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

这些组件可以进行交互和重用。

OLE

CORBA

CORBA标准是公共对象请求代理结构(CommonObjectRequestBrokerArchitecture),由对象管理组织(ObjectManagementGroup,缩写为OMG)标准化。

它的组成是接口定义语言(IDL),语言绑定(binding:

也译为联编)和允许应用程序间互操作的协议。

其目的为:

用不同的程序设计语言书写

在不同的进程中运行

为不同的操作系统开发。

UML

UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图等。

XML

CMMI

JRE

J2EE

J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterprieseapplicationmodel).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。

所属层次包括客户层(clietntier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

JDK

AOP

OO

Container

W3C

JMS

Domain

POJO

JVM

JNDI

JTA

SOAP

[SimpleObjectAccessProtocol,简单对象访问协议]

WSDL

JDO

JDO是Java对象持久化的新的规范,为JavaDataObject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。

JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。

这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。

另外,JDO很灵活,因为它可以在任何数据底层上运行。

JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

TDD

DAO

IoC

[InversionofControl,控制反转]

RMI

DNS

[InternetDomainNameSystem,因特网域名系统]

URL

URI

二十四、数据库连接池的工作机制

二十五、互联网提供哪些服务?

二十六、请写出JSP的几个隐含内置对象

答:

JSP中隐含内置对象

名称类型注释和范围

requestjavax.servlet.http.HttpServletRequestrequest

responsejavax.servlet.http.HttpServletResponseresponse

pagejavax.lang.Objectpage

Exceptionjava.lang.Throwablepage

pageContextjavax.servlet.jsp.PageContextpage

sessionjavax.servlet.http.HttpSessionsession

applicationjavax.servlet.ServletContextServletContext

outjavax.servlet.jsp.JspWriterOutputStream

configjavax.servlet.ServletConfigServletConfig

JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):

request用户端请求,此请求会包含来自GET/POST请求的参数

response网页传回用户端的回应

pageJSP网页本身

exception针对错误网页,未捕捉的例外

pageContext网页的属性是在这里管理

session与请求有关的会话期

applicationservlet正在执行的内容

out用来传送回应的输出

configServlet的构架部件

二十七、请你谈谈SSH整合

答:

SSH:

Struts(表示层)+Spring(业务层)+Hibernate(持久层)

Struts:

Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。

在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。

(View:

沿用JSP,HTTP,Form,Tag,Resourse;Controller:

ActionServlet,struts-config.xml,Action)

Hibernate:

Hibernate是一个持久层框架,它只负责与关系数据库的操作。

Spring:

Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

二十八、应用服务器与WebServer的区别

二十九、JavaServletAPI中forward()与redirect()的区别

答:

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。

这样,从浏览器的地址栏中可以看到跳转后的链接地址。

所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。

在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

三十、写一个简单的C/S结构程序,Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个字符,再写入本地显示?

答:

Server端程序:

packagetest;

import.*;

importjava.io.*;

publicclassServer

{

privateServerSocketss;

privateSocketsocket;

privateBufferedReaderin;

privatePrintWriterout;

publicServer()

{

try

{

ss=newServerSocket(10000);

while(true)

{

socket=ss.accept();

StringRemoteIP=socket.getInetAddress().getHostAddress();

StringRemotePort=":

"+socket.getLocalPort();

System.out.println("Aclientcomein!

IP:

"+RemoteIP+RemotePort);

in=newBufferedReader(new

InputStreamReader(socket.getInputStream()));

Stringline=in.readLine();

System.out.println("Cleintsendis:

"+line);

out=newPrintWriter(socket.getOutputStream(),true);

out.println("YourMessageReceived!

");

out.close();

in.close();

socket.close();

}

}catch(IOExceptione)

{

out.println("wrong");

}

}

publicstaticvoidmain(String[]args)

{

newServer();

}

};

Client端程序:

packagetest;

importjava.io.*;

import.*;

publicclassClient

{

Socketsocket;

BufferedReaderin;

PrintWriterout;

publicClient()

{

try

{

System.out.println("TrytoConnectto127.0.0.1:

10000");

socket=newSocket("127.0.0.1",10000);

System.out.println("TheServerConnected!

");

System.out.println("PleaseentersomeCharacter:

");

BufferedReaderline=newBufferedReader(new

InputStreamReader(System.in));

out=newPrintWriter(socket.getOutputStream(),tr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

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

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