1、五个问题:linux
1.软件开发时,好比web2.0的rest风格架构,先后端彻底分离,然而其交接时,极可能出现问题,而且由于彻底分离,因此有可能出现开发不一样步的问题,先后端的交互耦合,开发同步的问题该如何解决。git
2.数据操做,和逻辑操做,实体操做等如何分离解耦。github
3.若是有效果的分层解耦,三层框架是什么。web
4.过分解耦,或者大规模模块化开发时遇到的依赖冗余问题如何解决。数据库
5.如何在开发成本和收益之间权衡需求,如何判断刚性需求,伪需求。apache
6.如何在开发过程当中设计框架和预留接口使得迭代更加高效,维护更加轻松。windows
2、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 什么时候、何地、何人?后端
软件在阿波罗计划计划的初期还被看成初初学步的孩子通常对待,彻底不像其余工程学科;例如像硬件工程那样的受到重视,并且在你们的眼光中他就像是艺术、魔术通常,而不是一门科学。
一直以来Margaret Hamilton坚信这项发明流着艺术与科学的血液,虽然当时不多人是这么想。所以,她致力于为软件以及那些发明者争取应有的正统性与尊重,因此她开始使用“软件工程”这样的字眼来将之与硬件还有其余工程学类作出区别。
当她第一次使用这样的语词时,你们都以为有些可笑,甚至有很长一段时间被看成笑话。他们常笑她极端的想法。但最终,软件学科确实获得了应有的尊重!
安全
3、代码版本管理软件:服务器
1.Visual Source Safe( 简称 VSS )
易学易用是 VSS 的强项, VSS 采用标准的 windows 操做界面,只要对微软的产品熟悉,就能很快上手。 VSS 的安装和配置很是简单,对于该产品,不须要外部的培训(能够为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就能够很快的用到实际的工程当中。VSS 的配置管理的功能比较基本,提供文件的版本跟踪功能,对于 build 和基线的管理, VSS 的打标签的功能能够提供支持。 VSS 提供 share (共享 ) 、 branch( 分支)和合并( merge) 的功能,对于团队的开发进行支持。 VSS 不提供对流程的管理功能,如对变动的流程进行控制。 VSS 不能提供对异地团队开发的支持。此外 VSS 只能在 windows 平台上运行,不能运行在其余操做系统上。VSS 的安全性不高,对于 VSS 的用户,能够在文件夹上设置不可读,可读,可读 / 写 , 可彻底控制四级权限。但因为 VSS 的文件夹是要彻底共享给用户后,用户才能进入,因此用户对 VSS 的文件夹均可以删除。这一点也是 VSS 的一个比较大的缺点。VSS 没有采用对许可证进行收费的方式,只要安装了 VSS ,对用户的数目是没有限制的。所以使用 VSS 的费用是较低的。
2.SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本
Subversion支持linux和windows,更可能是安装在linux下。svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。目前业界评价的SVN易用性正在提升。它的客户机 / 服务器存取方法使得开发者能够从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出 (checkout :注 1)的模式避免了一般的由于排它检出模式而引发的人工冲突;它的客户端工具能够在绝大多数的平台上使用。一样, SVN 也不提供对变动流程的自动管理功能。通常来讲, SVN 的权限设置单一,没法完成复杂的权限控制;可是 SVN 经过 SVN ROOT 目录下的脚本,提供了相应功能扩充的接口,不但能够完成精细的权限控制,还能完成更加个性化的功能。SVN 是开发源码软件,无需支付购买费用。一样由于 SVN 是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,一般只能靠本身查找网上的资料进行解决。
3.ClearCase
ClearCase 的安装和维护远比 VSS 复杂,要成为一个合格的 ClearCase 的系统管理员,须要接收专门的培训。 ClearCase 提供命令行和图形界面的操做方式,但从 ClearCase 的图形界面不能实现命令行的全部功能。若是Unix/Linux服务器上安装了Samba服务,能够直接经过Windows下Clearcase的客户端 直接访问源代码,相对比较简单。ClearCase 提供 VSS, SVN所支持的功能,但不提供变动管理的功能。 Rational 另提供了 ClearQuest 工具提供对变动管理的功能,与 VSS不一样, ClearCase 后台的数据库是专有的结构。 ClearCase 对于 windows 和 unix 平台都提供支持。 ClearCase 经过多点复制支持多个服务器和多个点的可扩展性,并擅长设置复杂的开发过程。ClearCase 的权限设置功能与 SVN 相比, SVN 有独立的安全管理机制, ClearCase 没有专用的安全性管理机制,依赖于操做系统。要选用 ClearCase ,须要考虑的费用除购买 license 的费用外,还有必不可少的技术服务费用,没有 Rational 公司的专门的技术服务,很难发挥出 ClearCase 的威力。如如今网上虽有 ClearCase 的破解软件,但尝试应用的公司大多失败的缘故。另外,对于 web 访问的支持,对于变动管理的支持功能都要另行购买相应的软件。Rational 公司已被 IBM 公司收购,因此有可靠的售后服务保证。
4.git与svn的比较:
1)适用对象不一样。 Git 适用于参与开源项目的开发者。 他们因为水平高,更在意的是效率而不是易用性。Svn 则不一样, 它适合普通的公司开发团队。使用起来更加容易。
2)使用的场合不一样。 Git 适用于经过Internet,有多个开发角色的单个项目开发, Svn 适合企业内部由项目经理统一协调的多个并行项目的开发。
3)权限管理策略不一样。 Git 没有严格的权限管理控制,只要有账号,就能够导出、导入代码,甚至执行回退操做。 Svn 则有严格的权限管理, 能够按组、按我的进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操做。保证代码永远能够追踪。
4)分支( branch )的使用范围不同。 Git 中, 你只能针对整个仓库做 branch, 并且一旦删除,便没法恢复。 而 svn 中, branch 能够针对任何子目录,它本质上是一个拷贝操做。 因此,能够创建很是多、层次性的 branch, 而且,在不须要时将 其删除,而之后须要时只要 checkout 老的 svn 版本就能够了。
5 )基于第三点, Git 适用于单纯的软件项目,典型的就是一些开源项目,好比 Linux 内核、 busybox 等。相 反, Svn 擅长多项目管理。 好比,你能够在一个 svn 仓库中存放一个手机项目的 bsp/ 设计文档 / 文件系统/ 应用程序 / 自动化编 译脚本, 或者在一个 svn 中存放 5 款手机项目的文件系统。 git 中必须创建 n ( 项目数 )* m (组件数) 个仓库。 Svn 中只须要最多 n 或者 m 个就能够了。
6)Git 使用 128 位 ID 做为版本号, 并且 checkout 时要注明是哪一个 branch, 而 svn 使用一个递增的序 列号做为全局惟一的版本号, 更加简明易懂。虽然可使用 git tag 来创建一些文字化的别名,可是毕竟那只是针对特殊版本。
7)可跟踪性,git 的典型开发过程为: 创建分支,进行开发,提交到本地 master,删除分支。这样作的后果是之前 的修改 细节会丢失。 而在 svn 下作一样的事情,不会丢失任何细节。 这里是一个有趣的连接,代表了 git 下典型的工做方式:(以master为核心,不断建立新branch, 删除旧branch):
8)局部更新,局部还原。SVN因为是在每一个文件夹创建一个.svn文件夹来实现管理,因此能够很简单实现局部更新或者还原。假如你只但愿更新 某些部分,则svn能够很好实现。同时代码写错了,同时能够很好实现局部还原,固然git也能够经过历史版本还原,可是没法简单地实现局部还原。
比svn更快速的分支切换,由于分支都在本地。这使得git特别适合处理临时需求,或者小实验。
能够在星巴克写代码的时候随时提交,由于各版本快照(commit)都在本地
有一个全世界最大的开源社区——github,上面能够看到各类优秀的各语言代码,去官网语言列表看看才知道有那么多语言,就跟奥运会开幕式才知道世界上有那么多国家同样
总之, 公司的开发团队在进行复杂的多项目开发时, svn 是更好的选择。