软件开发工程师面试常见问题有哪些

啊南 4865阅读 2020.03.17

【导语】: 求职面试过程中,面试官总会问很多问题,以此达到快速了解求职者的目的,问题的答案以及求职者在回答问题的表现会成为面试官评分的一个重要依据。对于软件开发工程师岗位来说,面试官一般都会问哪些问题?相信对软件开发工程师岗位感兴趣的求职者来说都会比较想了解,具体的内容可以参考以下信息:

软件开发工程师面试常见问题

1、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用?
2、什么是WebService?
3、什么是中间件?
4、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
5、什么是OOP?OOP相对于面向过程编程有哪些优点?
6、谈谈Overload和Override的区别。
7、谈谈HashMap和Hashtable的区别。
8、请问abstract class和interface有什么区别?
9、请问软件开发中的设计模式你会使用哪些?
10、类的核心特性有哪些?

什么是WebService

答案:WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。
WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。
WebService=WSDL+SOAP+UDDI(webservice的注册) 
  Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。
  Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。
Web Service的优点 
  (1) 可以让异构的程序相互访问(跨平台) 
  (2) 松耦合 
  (3) 基于标准协议(通用语言,允许其他程序访问) 
Web Service的基本原理 
  (1) Service Provider采用WSDL描述服务 
  (2) Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server) 
  (3) Service Requestor在UDDI服务器上查询并 获取WSDL文件  
  (4) Service requestor将请求绑定到SOAP,并访问相应的服务。

什么是中间件?

答案:中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。
中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。
举例: 
1,RMI(Remote Method Invocations, 远程调用) 
2,Load Balancing(负载均衡,将访问负荷分散到各个服务器中) 
3,Transparent Fail-over(透明的故障切换) 
4,Clustering(集群,用多个小的服务器代替大型机) 
5,Back-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统) 
6,Transaction事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务) 
7,Dynamic Redeployment(动态重新部署,在不停止原系统的情况下,部署新的系统) 
8,System Management(系统管理) 
9,Threading(多线程处理) 
10,Message-oriented Middleware面向消息的中间件(异步的调用编程) 
11,Component Life Cycle(组件的生命周期管理) 
12,Resource pooling(资源池) 
13,Security(安全) 
14,Caching(缓存) 

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

答案:OOP,Object-Oriented Programming,面向对象编程不同于面向过程编程:
(1)OOP关注对象和角色,也就是事物的本质     
     1)OOP把客观世界中的对象抽象成对应的类;     
     2)通过类构造实例; 
     3)通过依赖、继承、实现等形式建立对象间的通信关系 
(2)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码 
(3)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型  

HashMap和Hashtable的区别

答案:HashMap是轻量级的(线程不安全的,效率高的)集合,Hashtable是重量级的(线程安全的,效率低的)集合。
         都属于Map接口的类,实现了将惟一键映射到特定的值上。
         HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
         Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。