架构设计面试系列-01

1. 软件架构设计都有哪些基本原则?

1、开闭原则(OCP Open Close Principle)

Software entities should be open for extension, but closed for modification.

定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。简单的说就是程序中类应该是易于扩展的,而不是一有什么新的需求或者变化就去修改原来的代码,这样很容易出现问题。

2、里氏替换原则(LSP Liskov Substitution Principle)

定义:在基类出现的地方,其子类也可以出现,并且不会出现错误。就是利用Java面向对象思想中的继承、多态的特性。简单来说凡是基类适用的地方,子类一定适用。

3、依赖倒转原则(DIP Dependence Inversion Principle)

定义:高层次的模块不依赖于低层次模块的实现细节。简单来说就是依赖抽象(高层次模块)而不依赖具体实现(低层次模块)。

4、迪米特原则(最少知识原则 LKP/LOD Least Knowledge Principle)

定义:一个类应该对自己需要耦合或者调用的类知道的最少,类的内部如何实现与调用者或者依赖者没关系,调用者或者依赖者只需要知道它需要的方法即可。

5、接口隔离原则(ISP InterfaceSegregation Principles)

定义:不依赖不需要的接口,从而容易重构、更改和重新部署。

6、单一职责原则(SRP Single Responsibility Principle)

定义:对一个类来说,应该仅有一个引起它变化的原因。简单来说就是模块的划分需要做到职责清晰,不要既能满足A需求,又能满足B需求,这样耦合太强,不利于后期的扩展和维护。

2. 什么是前后端分离架构?

前后端分离已成为互联网项目开发的业界标准使用方式,例如通过nginx与tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从“猿”进化成“人”的必经之路。

核心思想: 前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互。

Web服务器: 一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源;

应用服务器: 一般指像Tomcat,Jetty,Resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好;

一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。

以前的Java Web项目大多数都是Java程序员既搞前端,又搞后端。随着技术的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。大中型公司需要专业人才,小公司需要全才。

3. 什么是三层架构?

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构&

你可能感兴趣的:(面试,职场和发展,架构)