项目面试题

1.描述最熟悉的或者(最近)的一个项目 ?

目的:检测技术和项目的熟悉程度+工作职责

回答:项目名称,项目的甲方,背景,实现的目的和意义,该项目主要是为了解决什么问题,具体的实际功能(尽可能详细清晰)。

项目分为两期完成,我在项目中负责的一期中XX模块,二期项目中负责XX模块开发。负责对技术文档的编写,负责对项目上线后BUG修复等工作。

2.描述在开发项目中遇到了哪些问题 ?怎么解决的 ?

目的:检验你对项目的需求了解,参与程度,解决问题的方式。

回答:从需求问题和技术问题两个方面回答。

需求问题:和产品经理或者甲方的客户进行充分地讨论项目的实际应用场景,反复阅读需求文档(3遍或5遍)。

技术问题:比如Redis问题:如何把Redis内存中的数据跟mysql数据库中的数据保持同步。先百度(为什么、是什么、怎么用),阅读官方文档,利用晚上私下时间解决。

3.描述在开发项目中有哪些亮点 ?

目的:项目的独特之处和优点。

回答:项目的应用场景,项目规范(文档规范,编码规范)比如之前项目编码没有那么规范,现在换了项目经理,他按照一些上市公司的标准来规范项目,所以我认为规范是项目中最大的亮点。还比如项目承受的并发量等。

注意:亮点切不可一样,要回自己独立思考。

需求亮点/技术亮点:比如为了解决高并发做了哪些事情,项目用到了Redis缓存技术,之前没用到过这个技术。

4.看你简历上项目里用到的技术、框架、Redis、数据库等,针对这些技术问问题 ?

就是简历上写的技术,都要做好复习的充分准备。

5.你参与的功能模块深入细节 ?(用到了哪些表、表名叫什么、有哪些字段)?

1、XX功能(要描述清楚)

2、数据库用到了哪些表;具体的表名称是什么;表里面有哪些字段(提前都写出来):先说公共字段(主键ID)、状态字段(status)、排序字段(sortnum)、时间字段(create_date/update_date)、 用户字段(create_user/update_user)表示数据的完整性,用于以后做数据统计等。

6.线目上线部署过程 ?

如果服务器CPU达到100%了,你该怎么解决?

解决:赶紧上报领导,不要自己去操作,自己做不了主,搞砸了会有被开除的风险。

人员参与:开发人员先自己测试,然后交付测试组进行测试,修复BUG,回归测试等一系列完成以后,需要先进行领导报备(验收),验收完成确认无误后,由领导通知所有相关人员准备上线。

描述详细步骤(目的:看你对项目部署过程的熟悉程度):研发工程师收到许可上线通知(邮件或者口头形式)后,进行线上的准备工作。第一步:把自己开发的模块制定上线的策略,若是多个系统,需要确定上线的顺序,细节 :比如(注册中心,Config…);第二步: 数据配置(确认)上线后,同步更新数据库数据和表结构,确保数据库正式环境和测试环境完全一致;第三步:项目部署(要清理缓存,把测试数据清理掉);第四步:测试,开发人员要把业务流程完整走一遍(缓存预热),测试人员采用灰度测试(只需要少量数据或者测试数据进行项目测试)+ 走一遍完整的业务流程,确保无误后通知产品相关人员进行二次测试;第五步:数据监控(监控报警)。

7.单元测试或开发规范 ?

单元测试:测试准则:满足AIR原则,A(自动化),I(独立性),R(可重复)。

开发规范:按照需求文档来完成业务开发;目录结构规范、部署规范、文件命名规范、编码规范、数据设计规范等。

8.如何在线上修复BUG ?

1、通过打包编译文件工具进行代码替换。

2、自动化部署:Jenkins+Docker+Git+GitLab。

3、负载均衡(Nginx)把新的项目权重weight调大一点,用户就到这个替换的项目访问了。

9.如果你的项目出现线上问题,你怎么解决 ?

定位问题:1、结合线上日志思考问题出现的最大可能原因,找到以后要进行验证,然后及时解决。

2、如果找不到BUG,要想办法尽可能做到本地重现(重现需要哪些条件),若无法重现,就仔细观察线上日志,对各种日志进行排查,确定好优先级。若还不行,那就是日志做的不好。

3、如果本地做了重新+精细的日志,就把本地正常能运行的JAR包替换线上的JAR包,看问题是否解决或者是否发生变化。

注意:Linux如何查看日志命令。

10.项目增加新功能,你怎么和之前的功能同步运行使用 ?

1、发布公告通知维护/更新时间。(这个工作是开发人员操作的)

2、将本地更新好的项目(或JAR包)打包替换服务器上的项目。

3、运行。

11.项目的并发量是多少 ?

目的:你有没有高并发的实战经验。

回答:并发概念:指同一个应用在同一时间多个进行访问,人数越多,并发量越高,服务器带宽要求很高。服务器并发量分为:系统用户数、最大并发访问数、同时在线用户数、业务并发用户数。

系统用户数:比如某个APP用户数有万人。

最大并发访问数==同时在线用户数:比如最高峰同时有5000人。

12.如何来测试项目的高并发 ?

测试相关:使用JMeter进行项目的并发量测试。

13.高并发的解决方案 ?

1、负载均衡。

2、动静分离。

3、文件服务器(图片、视频)。

4、页面HTML静态化。

5、热点数据缓存(Redis)单独部署,搭建Redis Cluster集群。

6、数据库分表分库,冷热数据分离,SQL语句优化,合理的表设计。

7、提高服务器的性能CPU,高性能的服务器,高性能的数据库(主从复制、读写分离、Redis缓存)。

14.面能试中如何给自己加分 ?

人与人之间的沟通交流最重要的是:情商。

情商:说话/沟通能够让对方舒服(快乐是可以分享的),不露痕迹地说出面试官爱听的话 。

1、能考虑到代码的扩展性、安全性、有意识的参与框架的设计,需求分析。

2、有调优意识,有优化意识,通过监控和日志发现问题,然后解决。

3、综合素质: 学习能力强、动手能力强、认真努力、抗压能力强、团队合作好。有积极的心态,通过不断的学习来提高自己的技能,除了完成自己的任务外,还积极帮助同事,共同进步,共同成长。

4、有主见:团队中遇到问题,敢于主动出击解决问题。

5、需求方面:在需求开发中,除了能够按时按质的完成任务,还会在保证项目进度的前提下和项目经理及时沟通交流,以便完成更加高效的代码。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐