项目经历是简历和面试中必定会涉及到的内容,很多同学特别是本科生,经常担忧自己没有什么项目经历,简历和面试不知道怎么准备,对于校招,我们在面试的时候,对于项目经历,更关注候选人在项目经历讲解过程中涉及到的技术,设计开发方法,难点不足等进行交互讨论,在讨论过程中考察候选人的基础知识,处理问题的思路,反应能力,沟通交流和个人的综合素质等方面,在跟候选人沟通过程中更能真实有效的反应某个同学各方面的素养。
重点内容准备:项目的架构图,各个模块图,使用了什么技术(相关技术可能会比较深入的问下去),我负责的部分,主要难点,不足与改进的地方。基于这些问题会展开跟候选人细聊,
a)    项目架构图:对自己项目的项目架构图能够边讲解边画出架构图。架构图要有分层分模块设计思路,基础层,存储模块,逻辑处理模块等等。
b)    各个模块图,总体的项目架构讲解完,面试官会对某几个模块感兴趣,会聚焦去聊某个模块如何实现的细节,这时候需要能够讲解某个模块的实现细节,讲解过程中图文并茂是最好理解的,所以要求大家提前准备好各个模块逻辑实现细节。有条理的图文并茂的讲解。
c)    使用了什么技术,每个模块涉及到的技术点要非常熟悉,如使用java实现了MySQL数据库操作,同时要横向了解java操作数据库的方法都有哪些,有哪些开源或者更好的插件及其优劣对比,异常情况如何考虑,数据量大了怎么考虑,数据如何备份等等,把使用到的每个细节技术点不断横向纵向的扩展,做到每个技术点多维度的掌握,这些点也是大概率面试过程中面试官会跟同学们细节展开的内容,提前准备到了,就会非常有优势,跟其他只是用了某个技术点的候选人档次就拉开了。
d)    我负责的部分,一般我们包装的项目都会是2-3人来共同完成,一人的项目显得太小太简单,每个人负责不同的模块,之后集成,跟互联网实际项目开发中类似,大家协同作战,各司其职,关注候选人负责的部分,着重看候选人负责的模块是否是核心模块,对整个项目的作用和贡献,以及考察负责内容是否属实,为了整个项目上线所作出的工作和努力。
e)    主要难点,这是项目面试中常用的问题,也是面试官对比其他候选人的参考之一,每个项目或者自己负责的模块能够提炼出技术难点、自己如何解决的,解决的结果如何等等,这些是我们关注的,可以反映候选人对于问题的处理和解决能力。实际工作中提炼问题,解决问题是最核心的能力之一,这也是我们重点关注候选人的这方面的原因。
f)    不足及改进点。任何系统都不是完美的,都是不断迭代,不断进化的,实际开发中由于各种软硬件条件及外部内部实际情况,技术选型很可能不是最优的,如数据量限制,访问并发限制等等,需要能指出系统的不足及后续的改进方法。以考察候选人对系统未来迭代及进化的设计能力及思考设计系统的全面性。
常见问题:
    项目经历讲解过程中不同同学会遇到不同的问题,主要有以下几点:
a)    讲解模糊,无条理性,面试官听不懂或听不进去。
b)    遇到不会的过于紧张,直接就说不会。后面没办法聊下去。
c)    架构图和流程图画不出来,或乱画无条理性。
d)    项目真实程度受质疑。
交互讨论:
a)    简历的项目需要提前准备好内容,按照分层,分模块的条理性去讲解,避免因紧张讲话速度过快。
b)    遇到不会的尽量不用直接说不会,后面一般就很难聊下去了,如果是未知领域,可以say no,如果是自己会的技术相关扩展或延伸,尽量说出自己的想法或折中、差一点的方案或者另一种实现方式。
c)    此问题就不多说了,大家提前准备练习就OK
d)    再次强调,项目一定要非常熟悉,特别是细节。
沟通方式建议:
    沟通的时候,大家对面试官应有的礼貌和尊重肯定是必须的,但是沟通的时候要注意平等沟通。不卑不亢,自信沟通。有些面试的同学紧张的话都说不清,结结巴巴,这种效果肯定好不了。
有针对性的做一些训练沟通还是有必要的。同学们可以互相来当面试官,模拟面试。锻炼自己的临场发挥和随机应变的能力。