面试是每个程序员都逃不过的一环。在我面试过的程序员中,有一半的程序员都描述不好自己做过的项目,有些都讲不到3分钟就结束了,听完我都不知道这个项目是做什么的,所以,决定写下这遍手记,希望对正在找工作的你有所帮助。
在面试过程中,程序员都需要介绍自己做过的项目,有的是在工作中做过的,有的是业余时间完成的,有的是团队合作完成的,有的是个人独立完成的。丰富的开场是赢下面试的基础。我总结了如下几个方面的项目介绍流程,供大家参考:
项目描述
这一部分可以先总后分,总体介绍下描述下这个项目是做什么的,是否已上线,用户量有多大,然后介绍这个项目分为了哪些模块,如果是微服务,那可以介绍下有哪些应用。这一部分可以让面试官对你做的项目有个大体的了解,有些公司对行业有要求,比如支付公司、银行一般都要求有支付行业的项目经验。
团队组成
可以这样说:这个项目,加上我,总共多少人,其中几个是开发,几个是测试。也可以说几个前端,几个后端。
这一部分可以让面试官了解你这个项目的规模,参与规模大的项目肯定比规模小的项目有优势。
角色担当
可以这样说:我在团队里担当核心(前端、后端)开发,负责核心模块(核心功能)的开发,比如权限管理模块、登录注册功能、文件上传等。
技术架构
接着,可以介绍项目中用到的技术,前端用了xx框架,后端用了xx框架,持久层用了xx框架,数据库用的xxx。中间件用到了redis等,除了框架,还可以介绍一些工程化技术,比如jar包依赖使用maven,代码管理使用git等
场景解决方案
当你介绍完上面的技术架构后,面试官可以会问你:
redis在什么场景中用到?为什么要用redis?
为什么用git,不用svn?
所以我们需要提前准备好一些场景,描述一下用什么技术解决什么业务需求。
每个项目的场景都不太一样,需要结合各自的项目做准备。
比如电商项目,可能有添加购物车,支付,抢购秒杀等场景。
比如后台管理系统,可能有单点登录、报表导出等场景。
以上就是项目介绍的通用框架,在简历中,我们也可以用上面介绍的这个框架来写【项目介绍】。
很多同学在学习了《Spring Cloud + Vue 前后端分离
开发企业级在线视频课程系统》这门课后,都想将这个项目写到简历中,带到面试里,但是不知道该如何介绍。下面我们就以这个项目为例,看看如何介绍这个项目。
项目描述
这是一个类似慕课网的在线视频课程项目,也可以作为网校平台,项目分为三大块,前端网站+管理控台+服务端。
【管理控台】:供内部运营人员使用,用于管理课程、章节、讲师等核心精选信息,也包含了用户资源权限等系统管理。
【前端网站】:供网站会员使用,可以报名课程之后开始学习课程。
【服务端】:为管理控台和前端网站提供各种接口,具体分为了注册中心、网关路由、系统模块、业务模块、文件模块、公共模块,共6个模块。
技术架构
整个项目采用目前最热门的前后端分离架构
管理控台和前端网站使用前端框架Vue CLI
UI使用响应式UI Bootstrap,一套页面兼容PC、PAD、移动端
服务端使用微服务框架Spring Cloud
持久层使用Mybatis框架
数据库使用Mysql
中间件使用了Redis
Jar包管理使用Maven
代码管理使用Git。
(以上这些技术都是目前企业级项目开发中常用的,需要熟练掌握)
同时项目中还用到了阿里云的服务,比如OSS服务,用来存储图片视频;视频点播服务,用来对视频做加密转码并授权播放,保证视频安全。
场景解决方案
代码生成器:自己制作了代码生成器,集成到项目中,使用freemarker模板引擎(课程中有介绍怎么制作代码生成器),用于生成service层、controller层,dto层和vue界面代码,配合上mybatis-generator生成持久层代码,极大的提高了开发效率。在一张表设计完成后,只要1分钟,就可完成单表的增删改查管理功能(包含界面)。
单点登录:使用统一登录标识token+分布式缓存redis的方案,实现单点登录。
短信验证码注册:包括了短信验证码生成和验证码校验,并对验证码的时效性做了控制,比如5分钟有效;同一手机号1分钟内只能发送一次验证码;验证码只能使用一次等。
图片验证码登录:使用redis存储验证码,图片验码登录,可以有效防止撞库攻击、暴力破解,保障用户信息安全。
权限管理:使用经典的用户+资源+角色的权限设计方案,适用于绝大多数项目的权限管理,纯手工打造,未使用任何现成的权限框架,代码没有盲区,安全,易扩展。
文件上传:实现基本的Vue+SpringBoot文件上传功能
分片上传:当文件较大时,文件上传受网络影响较大,容易失败。在上面基本的文件上传的基础上,扩展成分片上传,提高大文件的上传成功率。
断点续传:在分片上传的基础上,再扩展出断点续传,当传到某一个分片失败了之后,下次再上传同一文件时,从余下的分片开始上传。
极速秒传:对于同一个文件,上传过一次后,再次上传时,会直接提示极速秒传成功,提高用户体验。
文件存储:项目中实现了两种文件存储方法,一是自己搭建文件服务器,二是使用阿里云OSS服务。(实际项目中推荐使用第二种,大大减少了运维工作)
视频加密:作为视频网站,视频安全是核心功能,这里用到了阿里云的视频点播服务(慕课网也是用的阿里云的视频点播服务)。使用接口直接和阿里云对接,实现控台统一管理
授权播放:视频经过加密后,需要授权,才能播放,这里我们使用阿里云aliplayer+阿里云授权接口,实现授权播放。
上面我举例了很多场景,实际在面试的时候,不一定要全部介绍,可以挑几个比较熟悉的着重介绍,其它的可以简单带过。
团队组成和角色担当
如果是一个人跟着课程一步一步做下来的,可以介绍整个项目从框架搭建到前后端代码开发,都是一个人完成的。
另外,还要自己准备一些常见的面试题,比如:
项目开发过程中遇到过什么问题?
这个需要平时积累了,将开发过程中,遇到过的比较难解决的点记录下来,可以这样回答:……这个问题解决后,很有成就感,成就感很重要,听起来有专研精神,不过只适合初中级程序员,高级程序员说成就感就有点掉价。
对我们公司有什么问题
这个需要提交了解要面试的公司的相关情况,至少让面试的人觉得你对他们公司还是有兴趣的,有提前了解。
最后祝所有的程序员都能面试顺利!