赞
踩
之前 我们讲了在项目开发前,作为开发人员我们必须要知道的项目常识,接下来我们继续讲解项目中要注意的事儿!
这个要看项目的规模及投入的人力,物力的多少。
一般java项目,可以回答半年左右,但这半年不全是开发,集中开发可能只有两个月时间,其它时间是做需求,设计,测试,部署等。
还有的项目做个一,两年都正常。
架构师将项目根据需求分解为各个模块,会将比较难的,复杂的交给核心开发人员。具体多少个模块也要看这个模块涉及到的功能点及复杂程度。
一般都会平均进行分配,不会出现让能干的全干的情况。如果有10个模块,3个人做,能力强的会分到4个。这个干活的多少也会和项目奖金挂勾,贡献大拿的肯定多,这个不用心里不平衡。
会的,不管由谁来做业务逻辑或数据库设计,最终都要有一个评审过程,整个项目组会对业务逻辑或数据设计进行确认,特别是数据库一般会有架构师设计,并且他对这个行业的业务很熟悉。如果公司有专门的DBA,还会对表结构进行进一步的优化。
会有。整理需求,写项目文档,带新人,测试,项目部署。
一句话,你就是一颗螺丝钉,项目那需要你,你就去。因为你是核心人员,能干。
新人去公司一般会培养一个月时间。去熟悉公司技术架构,以前的项目,公司环境等。这段时间也会由指定老员工带你去熟悉以上内容,不会不管你,但你也不能老烦别人,要体现出自学,解决问题的能力,他的评价对你很重要。最终的试用期结束,基本上就是看他的看法,因为项目经理是跟你没有直接接触的。
看项目估摸和项目周期
小项目一般5人,UI一个,3个后台开发,1个管理。
如果是做大型电商项目,就不好说了。一般的如下:
产品经理:1人,确定需求以及给出产品原型图。
项目经理:1人,项目管理。
前端团队:5人,根据产品经理给出的原型制作静态页面。
后端团队:20人,实现产品功能。
测试团队:5人,测试所有的功能。
运维团队:3人,项目的发布以及维护。
采用迭代开发的方式进行,一般一次迭代的周期为一个月左右。有些公司要求每周出一个可运行的版本。持续集成,持续部署。
在公司大家都很忙,带你的员工平时也有很多自己的工作。
一般会给你把公司开发环境搭建上,注意不同的公司技术架构是不同的,不要以为就是SSH或SSM的整合那么简单。环境搭建好后会从公司项目服务器上下载一个项目跑起来,给你关于这个项目的资料。让你学习,自己看业务,熟悉技术架构。如果遇到不明白的就问下,当然不能总去打搅别人。特别是简单的问题自己不思考就问会挨骂的,所以自学能力很重要。
此外,还会带你熟悉公司环境,中午在那吃饭,附近都有那些交通路线。
每个公司对绩效评分标准不同。
会从多个角度衡量。如员工的责任心、代码质量、学习能力、解决问题能力、沟通能力,根据权重计算出一个分值。
开发工具:Myeclipse10或intellij idea,后者现在用的更多。
建模工具:rose ,viso
数据库设计:powerDesign
项目管理工具:禅道
数据库:oracle11,mysql5
主流是Spring,mybatis,springmvc, struts2和hibernate现在新项目用的少,多用于老项目的维护。
现在的vue,angular, springboot,springCloud,微服务架构都是热点技术。
首先,要明白一点,当你被问及项目经验的时候,面试官的目的不仅仅是考察技术,也是你的项目概述能力。
这个要结合自己做的项目。要了解项目中的真正的核心业务和难点是什么。
比如:
在做电商项目时可以写秒杀和促销活动你是如何实现的。传统业务可以写复杂的业务逻辑。这需要提前做充分准备工作,多练习讲几遍。
但是若无真实电商项目经验,建议还是不要写这个,因为面试官会把你问的头皮发麻!!!
通用的项目流程就是:需求调研-分析设计-代码实现-测试-部署项目-运维
但是每个公司都有自己的一套开发流程,小公司可能不标准。但是大公司都是非常严格的,做项目必须按照项目流程走。只是可以根据项目大小进行流程上的裁剪,但有些必要流程是必须有的。
在项目每个阶段都会有产出物,我们把这些产出物叫项目文档,有些文档是必须有的。
需求阶段:用户需求说明书,需求跟踪矩阵,需求调研报告
设计阶段:概要设计书、详细设计、数据库设计
实现阶段:接口列表
测试阶段:单元测试用例、单元测试BUG管理表、集成测试、系统测试
试运行及验收:用户使用手册,试运行计划、现场安装表
风险管理:风险管理计划、风险检查表
版本控制是由项目经理管理,可以按实际情况将项目切换到不同的版本。
trunk
用于保存开发主线
branches
用于保存支线副本
tags
用于保存标签副本
Subversion
提供了主线、分支管理技术,使得在软件开发中可以更方便、灵活的对项目的进度、版本的发布、版本的维护、软件功能的拓展与定制进行管理。
主线(trunk)
:一个项目建立时就存在,并伴随着项目的成长而不断成长,直到项目完全结束。
分支(branch)
:一般是指功能分支,例如:我们的某个项目要添加一个模块,但这个模块又比较复杂,实现难度比较大。为了不影响主线的稳定,我们就可以创建一个功能分支来专门开发这个模块,当这个模块开发完成以后,并通过测试部门的各项测试,再合并到主线中去。再比如,我们的交警 GPS 项目已经开发完成了,但是这个项目是给泉州交警做的,现在我们又接到了一个交警项目,不过是要给厦门交警大队的。现在厦门交警大队要求我们给他们定制一些功能。我们又不想在主线上进行修改,这个时候,我们也可以创建一个分支,并在这个分支上开发,这时是不会对主线造成影响的。等给厦门开发完成了以后,我们发现,他们要求的有些功能其实很好,以后别的地方可能也需要同样的功能。这个时候我们就可以根据我们的需要,将有用的模块有选择的合并到主线中来。
标签(tag):标签和分支一样,也是一个目录,不过这个目录中一般存放的是发布的信息(当然我们也可以只用分支,但是用标签更清楚明了一些)。还是拿我们的交警项目来举个例子:我们的交警项目开发完成了以后,要拿给泉州交警大队用了,也就是要发布(release),假设这个版本叫做1.0.2。这个时候,我们就要创建一个标签,当泉州交警大队用了三个月,发现了一个 BUG,我们只需要签出这个标签中的代码(它和我们刚提供给泉州交警大队时候的是一模一样的),进行调试,并修正这个 BUG。然后再发布一个版本,假设叫做1.1.0,这个时候我们就在创建一个 1.1.0的标签……
要注意,标签目录里面的代码,要进行严格的控制,除了修正 BUG 外,不能做任何其他的事情。
如果项目需要实现支付功能,短信功能会去调用第三方提供的接口。第三方会提供详细的接口说明及demo.
如果是前后台的分开开发,也会通过接口约定数据如何交互。这个需要前后台开发人员协商决定。
有的,大公司专门由架构师根据业务写接口,然后下面的开发人员实现。
小公司或小项目直接由开发这个模块的人员写接口。
通常有以下类型服务器
应用服务器(放项目webapp)
数据库服务器(DB)
邮件服务器
文件服务器
图片服务器
需要,因为最后部署项目时需要会配置服务器。如在linux下安装jdk,tomcat,nginx,复杂的话可能需要做服务器的集群。当然大公司有自己的运维团队,他们会负责服务器环境的配置,不过做为开发人员也要知道。
项目小组每天有站会,时间在10分钟内,每个人说下自己当前的工作及是否有问题。项目经理也会安排下具体的工作任务,并对昨天的工作进行check.
开发人员之间如果在一起,最好通过面对面的方式沟通。如果不在一起,可以通过即时软件进行沟通。
项目管理软件开发人员可以不用太了解,基本知道些就可以。比如分配给你的WBS(工作任务分解)是什么就可以了,了解公司开发项目的流程等。
一般是在100行左右,这也和你在完成的这个模块功能难易度有关系。
Bug率一般是千行代码控制在10个以下。也要看公司的资质,如果公司通过 CMMI的等级,在接项目时客户方会有明确的要求,要求公司的资质。
CMM1级 11.95‰
CMM2级 5.52‰
CMM3级 2.39‰
CMM4级 0.92‰
CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成
通过实施CMMI认证和评审,能够帮助你们公司建立一些软件开发、质量管理等方面的规范(质量体系)来,能够帮助你们公司的软件开发有章可循,使得开发过程不再混乱
要根据实际的项目来确定。
首先确定用那种开发体系,在web开发方面,可选的有java,.net,php
确定好语言后,可以考虑用那种技术架构。每个公司都会有针对自己公司的业务设计好的一套项目架构。而且大公司的架构也不一定适用于所有项目,比如淘宝的架构很完善,但那也是随着业务量一步一步发展演变而来,要是别的公司盲目使用,反而适得其反。
在回答时可以说,公司主要业务是某个行业,根据这个行业的特点及业务量,我们采用的是SOA面向服务的架构,并且最近也在向更深入的微服务架构转。
以电商项目来说,需要服务器。
需要24台服务器。 24
Mysql 2
Solr 7
Redis 6
图片服务器 2
Nginx 2
注册中心 3
Activemq 2
共需要48台服务器。
其实以上服务器也可以根据项目部署特点及客户要求减少。
一般小项目3-5台就够了。主要把web应用服务和数据库服务要分开。
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
在一些大项目中,各个子系统之间是需要消息共享的,这就涉及到消息发送和接收问题,如何保证我发的消息,别一个子系统能收到,就需要消息中间件来管理。
消息队列(Message Queue,简称MQ)是企业级互联网架构的核心产品,服务于整个阿里巴巴集团已超过 10 年,经过阿里巴巴交易核心链路反复打磨与历年双十一购物狂欢节的严苛考验,是一个真正具备低延迟、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件。
由项目经理管理整个项目进度,在项目开发初期就会有一个项目整体的开发进度计划。根据这个计划会每半个月进行小的调整,为每个开发人员制定一次任务分解WBS时间表,同时check项目是否按计划执行。如果延期就要考虑加班或加人手。另外有经验的项目经理也会为自己预留大概10%的时间。
由有经验的开发人员或DBA,最好是以前做过类似的项目人来设计。因为数据库设计的好坏决定了项目的质量和开发进度。数据库设计好以后,会由技术总监及全体项目组开发人员进行评审。
开发与需求:主要是根据需求文档进行开发,如果发现需求有不清楚的地方要及时和需求人员确认。
开发与测试:开发人员会将每天开发的代码上传到svn服务器,测试人员会将代码下载进行测试,包括黑盒,白盒,压力等测试,如果有bug,会写bug报告提交给项目经理,由项目经理告诉开发人员进行修改。
开发与实施:在上线部署时写部署文档,帮助运维人员部署项目。
业务由项目经理去客户方获取,回来后组织组员开会讨论需求,这是一个反复的过程。接口由有经验的开发人员根据需求分解后的模块编写,在编写的同时尽量做到高内聚,低耦合的设计。
常见的端口号有:
Tomcat 8080 ,http 80
Mysql 3306, oracle 1521 , sqlserver 1433
上线部署先要购买服务器。
如果客户认为系统需要对外保密,不接入互联网,只是部门内部使用。可以使用客户方提供的原有机器或是购买新的服务器。
如果是部署在公网的项目,也可以采用向服务器供应商租借服务器的方法,如阿里云服务器或七牛云服务器。按时或流量计算费用。好处是降低购买服务器成本,并能根据业务需求,临时添加或减少服务器。
服务器确定后,要选择在服务器上安装linux操作系统,现在多用centos.装好后安装jdk,tomcat,weblogic,数据库等运行环境,如果项目采用分布式部署,还要安装nginx,mycat等。之后在应用服务器上安装web应用,就是war包,还要在数据库服务器上安装数据库,建立系统所要用的库和表。最后是测试,看整个系统,包括软件,硬件,网络是否有问题。
开发人员需要写安装部署的文档,交给系统集成部门的人员去安装或亲自去安装,在整个部署过程中随时进行技术支持。
上线时,项目应该已经通过最终的验收,项目中的主要文档已经提交过。上线后应该对客户方进行培训,会有系统的使用说明书。
上线后如果有bug,会由客户方提出到项目经理这边,项目经理让你修改代码后重新编译并上传到服务器,一般可以通过远程访问服务器具并上传文件到web服务器。
最好回答上线了,不要怕回避这样的问题。在网上先找好,了解它的业务。
如果说没有上线,也可以说自己在项目最后被调到其它项目组。或说自己以前做外包,没机会部署项目。
Ajax跨域问题,在使用mavan部署聚合项目时最常见。后端传回的数据,因为子项目的域名或端口号不同,导致前台无法接收到数据,最后使用jsonp解决。
Maven包冲突,在引用不同的jar包时,会因为依赖包的导入导致相同包冲突,这种问题很难查,当时我在整合项目时遇到过。最后通过在项目的pom.xml文件中加入exclusion结点排除冲突的包解决。
Excel导出大数据报错,发现内存溢出,导致程序崩溃。后使用内存缓冲,一次导出部分数据解决该问题。
数据一般是客户方提供,客户会提供测试数据。将这些数据导入测试库。
一次取多少看业务需求。比如有的要求按日,有的按月取数据。如果一次取的数据量太大,还要考虑如何优化,要不服务器内存吃不消。
具体要看你做的项目,这个必须要自己做一遍才能有体会。
OA工作流程:比如一个报销流程,在公司里会有标准流程,如果数额小于100,则培训部门领导审批就可以了,如果在1000-5000之间由管理担当审批,超过了5000则由总经理审批。如果项目中写工作流,activitity框架必须了解。
分布式开发不是业务流程,它是部署项目的一种方式。主要是针对项目很大时,采用的一种将项目按服务功能进行划分,分别进行开发。
上级汇报单位:如果是开发人员上级就是项目经理。
如果是项目经理,上级就是公司领导和客户方的主要领导,项目进度要每周汇报给双方。
各部门如何配合完成开发:首要了解公司的组织架构。在开发时,如果需要招人就需要人事部门配合,如果需要购买服务器需要采购部门买,如果出差则需要财务部门做报销或是预借款。所以这些管理部门的有力支持也是项目成功的关键。
项目外包就是别的公司或人接到项目,自己做不过来或不想做,找其它公司来做这个项目,挣个差价。
人员外包是指外包公司与软件公司有合作,有些软件公司可能突然接到多个项目忙不过来,又不想招人,因为项目做完后这些招的人就是累赘了。所以会采用人员外包的形式,让人员外包的公司提供所需要的开发人员,经过自己面试通过后加入项目组,好处在于不用管外包人员的工资福利,保险等,这些都是由外包公司管理,项目做完后就将外包人员退回即可。
这个我也不知道这个系统是啥,就按常规来说吧。
系统的数据首先是分类型的,有生产数据,日志数据等。
如果是生产数据就要看生产规模,规模越大数据量越多。
如是是日志数据,也要看日志中要保存什么数据,如果需要保存的详细,数据量也是很大的,比如一个电商网站,每天产生的日志文件以T计。1T=1024G
当然画了,有美工或UI做,开发不管这事。
这个就是看你项目怎么描述这个项目了,尽量不要写流水账的功能描述,完了给人感觉很假。
如果对方说你做的就是基本CRUD,你就要详细说下这个业务流程,可能是没有在简历上表达好。不要让面试你的人感觉你做的东西很low
客户给的,从客户的业务系统抽取了一部分数据,当然这些数据也是客户修改过的模拟数据,不会给你真实数据。
首先会检查项目进度,是否按进度走。然后针对每个人的写的代码进行审核,对代码质量进行审核,最后是解决项目中存在的问题和隐患。
如果在大公司会由专门的质量管理部门QA,依据公司项目开发流程进行项目监控及管理,开发人员是很烦这些人的,因为天天给你找事。但反过来想,他们也是为了项目的质量,所以要互相体谅。
有的,在开发之前就会预留接口与现在的系统对接。
这个一般在做项目初期就要考虑到,因为时间,成本等因素,项目会分几期来做,这就要求在做第一期时就要考虑后面功能的实现,要为后面的功能预留对应的接口。
现在比较认可的项目有:大型电商(技术复杂),互联网金融(业务复杂),在线教育,健康医疗,项目中包括PC端,移动端,最好还能体现出前端技术,如bootstrap,vue,angular等。
传统行业也可以写,但不要都写,这也是现在我们学生的弊端。3个项目写一个传统行业就可以了,不要写流水账项目描述,着重一个复杂业务的实现。
分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要进行通信。(每个子系统都可以添加多个服务器,做成集群)
集群:同一个工程部署到多台服务器上。
分布式架构:
把系统按照模块拆分成多个子系统。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。
项目结束后项目经理会招开项目总结会,可以提下个人在技能方面的提升以及对业务的熟悉。当然项目奖金也很重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。