面试-包装一个普通的项目
写这个文章的起因
最近在找实习,被问的最多的就是我在简历上提到的项目,然而实在是匆忙,没有好好准备,以至于自己做过的项目,自己一行行码下的代码都忘记了。当面试官看到你对自己的项目都不清楚的话,必挂无疑喽。
一般面试官会叫你简单介绍一下你的项目
比如说我,我在去年做过一个驾考在线报名平台的项目
模拟对话
面试官: 简单介绍一下你的项目
我:XXXX是一个专注于大学生驾校报考市场的平台,学员可以在平台上直接选择优质教练和驾校报名,我们提供一站式驾照报考服务。
面试官:项目你负责什么?
我: 我主要负责技术开发,承担网站的主要架构设计和编码工作(这之后面试官一般会问你网站用的什么技术,不如接着说),我们平台主要使用python作为后台开发语言,并且使用django作为开发框架,mysql和redis为支持的额数据库,前端使用jquery框架。我在团队中负责大部分的前端后台开发工作,后台大概80%,前端大概50%。
面试官: 说说你为什么使用这个语言和这个框架吧?
我: 使用python是因为其代码编写体验好,同时也是胶水语言,不管是什么领域都可以使用,特别适合创业公司产品迭代更新快的情况,关于django,因为使用了python的语言,而且该框架是python里面最出色的框架,技术资料说很方便学习和使用,除此之外,框架本身自带admin后台,可以为开发者减少很大一部分的编码工作。
面试官: 项目中有这么困难的地方?(这个是必问的,而且很重要)
我:(我的项目其实本身比较简单,所以想在面试官面前表现一下,这个问题就是关键,所以要进行适当的包装,这个并不是说要表现的你有多么牛逼,而是要让面试官知道你遇到问题解决问题的的思路)
1,关于微信登陆这块,由于当时微信登陆没有好的调试工具,所以只能一步步的来,首先获取code,确保code正确之后然后在通过code好奇accessToken,保存好token,然后用token获取用户信息,保存到数据库,首次登陆的uid会自动创建一个用户,短时间内用户登陆时就可以直接使用cookie登陆,避免每次都使用调用微信登陆接口,就这样一步步稳扎稳打的调试好微信登陆的接口。 但是这时候问题又来了,关于多渠道登陆的问题,现在网站基本上都是可以通多多个方式登录的,而我解决的办法是从数据库入手,建立分表,指向用户的主表,分表存储登陆API返回的信息,就这样一个主表保存用户信息,还有带有多个分表,构成一个一个用户模块。。
2.关于排序问题了,现在列表是一个webapp不可或缺的模块,产品展示都是离不开列表的,但是问题了在于你怎么样把这些产品进行一个分类排序,比如常用的距离最近,实现? 说说我的方案,把商户的经纬度分别建立索引,数据库查找然后取交集就好 了,这里就用到分治法的原理,把问题分割成更小的问题,极大的减轻了查找的时间。
3,一个最简单的推荐算法,因为项目中要在首页给用户推荐教练,和驾校,但是产品的内容比较少,没有必要花太多时间去搞专业推荐算法,所以我的解决办法是,给驾校所有的各个指标建量化建表,同时用户登陆时会提示用户选出最在意的几项指标,推荐的就是根据用户的优先选择的指标直接利用数据库orderby来进行推荐,比较简单粗暴,考虑到以后的规模扩大还有一种升级方案是使用十分简单的聚类推荐或者相似度矩阵。当然这些我只是做一些简单的了解,真的去做还是要去系统的学习(不要给自己挖坑)
面试官:(这货项目经验还不错,解决问题的思路也清晰,好吧,再问问基础吧!),那来谈谈tcp三次握手吧(微笑)