晚上听了牛客网直播的面经讲座,感觉还是有干货的,虽然可能内容上是属于开发类童鞋的对口菜,不过安全的也可以有所借鉴,在此将要点总结小记一下。
1.怎么做项目
筛选
筛选要有目的性,即要明白自己做项目是为了什么?比如:为了练习语言,为了学习框架,为了学习协议,为了了解设计模式,还有为了以后的职业规划考虑(要做C++工程师,java工程师)等等。如果要练习语言,比如要练习java语言,那就不要考虑去做C++的项目,这样子~
循序渐进
- 难度:不要一开始就想着做一个屌爆天的项目
- 兴趣:做的一定是自己感兴趣的项目,这样才有动力源
- 造轮子:先从模仿开始
- 最后再考虑改进创新
- 可考虑的项目有:爬虫,游戏,编辑器,网站,app,库…
2.实践
新手上路
- 先点后面:即先考虑做出来项目中一个很小的点,比如网站,可以先实现一个小点(上传文件怎么处理?用户登陆怎么处理?)之后再考虑其他功能点
- 先模仿后改进:先抄轮子,再造轮子改轮子
老司机
- 核心难点
- 从架构到模块
- 找资料的顺序:官方文档->RFC->权威书籍->Google->StackOverFlow->博客
3.项目总结
核心难点和结果
- 核心算法
- SDK,框架
- 并发量,准确率
- ……
扩展和深入
- 从单机程序到网络程序
- 从单线程到多线程
- ……
4.面试的时候讲项目之面试官的关注点
能力
- 你了解什么(即知道项目的要素,是亲手做的项目,简历非伪造)
- 你深入探索过什么(要有深入学习的意识,而不仅仅是用一些现成的API,组件之类的,更要关注这些中间件的实现原理,底层细节)
- 你横向了解过什么(同类型程序和产品的对比)
即学习一个东西并不仅仅停留在这一个东西上,有自己深入钻研的意识,形成自己的总结甚至方法论。
潜力
- 你怎么解决问题
- 你怎么举一反三
- 你如何优化项目
- 你如何快速学习
5.自己介绍项目
核心箴言:有理有据,不要吹牛逼
- 博客网站(怎么做权限控制,数据库安全如何保障…)
- APP(SDK的实现细节,自定义控件优化,方案对比…)
- 算法(坑和解决思路,灵感来源与融会贯通…)