一般来讲,系统架构师应该拥有以下几方面的能力:
1:具备
8
年以上软件行业工作经验;
2:具备
4
年以上
C/S
或
B/S
体系结构软件产品开发及架构和设计经验;
3:具备
3
年以上的代码编写工作经验;
4:具备丰富的大中型开发项目的总体规划、方案设计及技术队伍管理经验;
5:对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握;
6:对
.Net/JAVA
技术及整个解决方案有深刻的理解及熟练的应用,并且精通WebService/J2EE
架构和设计模式,并在此基础上设计产品框架;
7:具有面向对象分析、设计、开发能力(OOA、OOD、OOP),精通
UML
和
ROSE,熟练使用
Rational
Rose、PowerDesigner
等工具进行设计开发;
8:精通大型数据库如
Oracle、Sql
Server
等的开发;
9:对计算机系统、网络和安全、应用系统架构等有全面的认识,熟悉项目管理理论,并有实践基础;
10:在应用系统开发平台和项目管理上有深厚的基础,有大中型应用系统开发和实施的成功案例;
11:良好的团队意识和协作精神,有较强的内外沟通能力。
OOP是面向对象编程的英文全称(Object Oriented Programming)的英文的首字母,它表示的是一种计算机编程架构。关于面试中OOP的提问可以从其核心思想封装,继承,多态三方面展开,具体如下:
1.OOP之封装,封装主要是保证组件不会以不可预期的方式改变其他组件的内部状态,而只有在那些提供了内部状态改变方法的组件中得情况下,才可以访问其内部状态。
2.抽象完一个事物后,可能在特定的条件下,其本身的状态需要改变,但是这个改变并允许其他的事物来进行,这样的改变只允许这个事物认同的操作域来进行,可以是该事物本身,也可以是它信任的其他事物。这样我们就能对我们抽象完的每个事物进行自身数据的保护。
3.OOP之继承,继承指的是从已有类得到继承信息创建新类的过程。让抽象出来的事物具有本应该具有的联系。允许在现存的组件基础上创建子类组件,这统一和增强了另外两个特性——多态性和封装性。
4.一般来说就是用类来对组件进行分组,并且还可以定义新类为现存的类的扩展,这样则可将类组织成树形或网状结构,这体现了动作的通用性。
5.OOP之多态,从定义上来说,多态指的是组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
6.在实际应用体现为用一种解决方案来解决对一类问题,对于不同的事物解决途径和结果不同。在C++中实现多态性有三种方法,分别是:虚函数,函数重载和运算符重载。
扩展资料:
OOP相对于面向过程编程的优点:
(1)OOP关注对象和角色,也就是事物的本质。
(2)OOP把客观世界中的对象抽象成对应的类; 2)通过类构造实例; 3)通过依赖、继承、实现等形式建立对象间的通信关系。
(3)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码。
(4)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型。
参考资料来源:百度百科-OOP
不同人对架构师的理解也不一样,之前去面过一家国内也算大公司了,面试官就认为你只要会搭集群系统,知道怎么优化jvm,用过memcache才算架构师,其实架构这个词本身就太抽象了,架构需要考虑的东西太多,架构师也就更难定义,这里我简而言之,在团队里能够贴合实际情况,比如现有的人力和硬件资源,给出合理的解决方案,解决需求中碰到的问题,是架构师最基本的工作,就上面提到那次经历,其实很多东西比集群配置和优化jvm更重要,这里涉及一个“重要性”的概念,改动成本越大的东西,重要性就越高,设想数据库设计,代码组织结构,接口标准,一旦成型后期就很难修改,反而集群什么的,改起来几乎对代码没有什么太大的影响,J2EE水太深,随随便便就能说出太多需要深入了解的东西,凡事多问“我为什么要这么做”,不要总问自己“怎么做”