项目、竞赛、简历面试指南
项目、竞赛、简历面试指南
程序员指南.从入门到入土
确定方向
- 算法工程师
学习技术
编程学习的套路
无论学习任何编程技术,都可以遵循以下步骤:
首先了解这个技术是做什么的?有什么优缺点?适用于什么场景?(感兴趣或者和目标无关的技术可以不学)
能够被动使用该技术完成项目或者解决问题(要多写代码,会用技术,被动是指别人让你用这个技术(比如网上现成的项目或教程视频)
进一步了解该技术的特性,并能熟练运用,主动用该技术去解决对应的问题(阅读官方文档,进阶书籍等)
了解该技术的核心思想、关键模块、各模块的作用(阅读官方文档、技术文章、进阶书籍等)
可以在掘金看一些技术文章,比如系统的设计思想等!
阅读该技术的源码,由整体到局部逐渐深入(利用开源仓库)
能够在源码的基础上修改源码/定制开发,或者给该项目贡献代码或插件(可以多和原作者、项目的issues区讨论交流)
自己实现类似的技术(推陈出新)
积累经验
项目
建议
最好能够独立从 0 到 1 完成至少一个项目,需求分析、技术选型、初始化、增删改查、单元测试、部署上线、不断完善和优化
如何获得项目经历
星球项目
课堂大作业
视频/书籍/文章教程
参加竞赛
给开源项目贡献
- issues区答疑
- Bug修复
- 新增功能
- 负责模块
开源项目仿写
- 学会在github上找自己想要的项目(部署,运行,学习实现项目的亮点功能)
- 完全仿写
- 学习新增功能
- 用另一种语言实现(可以是实现项目,也可以是实现一种组件)
仿站(模仿现有的网站去实现同等功能的网站)
自主实现
什么样的项目有竞争力?
- 个人参与度高(负责)
- 和你要求职的方向高度吻合
- 用的技术较为丰富,且每个技术用的恰到好处,为了业务而应用
- 有某个方面或比较全面的优化点,如性能、稳定性、可用性等
- 设计算法很巧妙
- 能够解决某个问题,比如业务场景:帮忙抢到火车票,技术问题:自动化构建平台、组件库,行业问题:广告计算平台等
- 前沿,比如区块链、前端流行的低代码平台,后端流行的云原生等
- 项目影响力,比如star 数,用户数等
- 项目创意好,市面上没有且有一定作用的东西
项目优化思路
- 性能
- 可靠性
- 可用性
- 成本
- 系统复杂度
- 可伸缩性
- 稳定性
- 可维护性
- 可扩展性
- 体验
- 并发
- 合理性
- 容错性
- 可观测性
- 安全性
竞赛
算法类竞赛:
- 蓝桥杯
- ACM
- LeetCode周赛
- 百度之星
- CodeM
- 阿里天池
- Kaggle
作品类竞赛
- 计算机应用能力大赛
- 微信小程序应用开发赛
- 三创赛
- 互联网+
- 挑战杯
求职 - 投递简历
投递时间
完整时间:
- 2 月 - 5 月
- 春招,面向大四/研二等即将毕业的同学
- 暑期实习,面向非毕业生
- 6 月 - 11 月
- 秋招,面向大四/研二等即将毕业的同学
- 寒假实习,面向非毕业生
黄金时间(提前批):
- 2 - 3 月
- 7 - 9 月
投递目标
建议多投简历,从相对不想去的公司开始投递
- 岗位
- 公司
- 部门
- 技术匹配度
- 地点
投递渠道
- 官网
- 官方公众号(比如腾讯招聘)
- 内推(建议部门直推):相关公众号,leetcode等平台
- 宣讲会(线上/线下)
- 找工作的网站
- 实习僧
- 牛客网,有很多互联网公司的内推机会
- 智联招聘
- Boss直聘
- 前程无忧
- 拉钩招聘
求职 - 参加笔试
只是形式,简历够好,不笔试也能面试
- 性格测试
- 算法题
- 技术性的题目(选择、判断)
准备面试
自我介绍
1 分钟左右,在自我介绍中突出自己的技术/业务/项目优势,并且在结尾抛出“钩子”,吸引面试官提问
- 你是谁?
- 经历:表达出你做过什么?会哪些技术?
- 突出重点
项目介绍
- 为什么要做这个?体现出自主性:如为了巩固知识,为了完成某个自我需求
- 从 0 到 1 实现了这个项目,用了哪些技术?
- 有哪些亮点?做了哪些优化?
算法
大厂基本必考
即使没空刷算法,也要了解每个算法和数据结构做了什么?
建议每道题目 40 - 1 小时
20分钟左右思考,没有思路就看题解
技术
八股文,(技术相关问题)
面试软技巧
- 礼貌精神
- 不要抢话,想清楚再回答
面试过程
自我介绍
项目考察
技术考察
算法考察
不仅要说出思路,且要能运行通过
业务考察
设计一个地铁轨道交通系统?
设计一个实施弹幕系统?
设计一个排行榜、点赞?
可以在掘金看一些技术文章,比如系统的设计思想等!
反转问答
- 对你的建议
- “收集”一些信息
- 询问一些题目的解法
面试复盘
面试之后要做的事
- 快速回想并记录自己面试中遇到的题目和心得,最好可以写面经
- 保证自己没答出的题目下次面试可以回答出来
优秀面经
- 星球同学的分享
- 牛客网
- LeetCode
Offer选择
尽可能多地争取offer,不要拿到一家就躺平
选择因素
- 薪资
- 地点
- 技术匹配度
- 行业
- 工作时长
- 公司口碑
- 部门口碑
- 领导口碑
- 业务口碑
- 稳定性
- 情怀
参考平台
- 校招薪水 Offer Show 小程序