写在前面
本文的目的很简单,一句话:
用最少的时间,最高效率,让你清楚:想要拿到python offer,你需要做什么?你该怎么做?如果你不具备这些条件,我不建议你转行学python!
背景
我在土木专业挣扎了六年。刚毕业的时候,我来到了上海,进入一家设计院做土木工程师。然而土建大坑逐渐消磨掉我的热情。考虑到建筑行业日薄西山,房地产也不景气,于是我开始准备跳槽啦!
2019年初,我拿到了国内某大型互联网公司的Offer,如愿跳出土木大坑成为了一枚python程序媛,直接感受是工资翻了一翻。
跳槽的过程虽然辛苦,但是也还算顺利。所以我打算记录下来分享给大家。
我也想提醒很多向我一样冲动想转行的小伙伴,首先要考虑清楚自己是否真的不适合本行业的工作,想清楚你是否真的了解互联网了解IT?
如果你想了解更多我转行的准备以及作为一个程序媛的日常生活的话,
如果你也是跟我一样风风火火又不安分的孩子,那么改变和学习起来吧。
尝试,才是对自己最好的交代哦。
面试之前
市场环境
先说一下大环境,中国的互联网环境已经渐趋稳定成熟了,但初中级别的程序员依然很泛滥,高级程序员很缺失。所以想要在众多应聘者中脱颖而出,实力才是王道。
另外,通常的招聘季是金三银四或者金九银十,像我这个11月份去找工作的毕竟是很少了,但我觉得上海毕竟是大城市,要说市场上没有岗位是不可能的,另外在淡季,和我竞争的人也很少了。所以,基于以上的判断以及自己的勇气,我毅然觉得辞职,开始了我的python转行求职之路。
个人定位
我觉得,每一个招聘者都要对自己在市场上的位置做一个合理的评估,这样才能准确的知道自己想要找什么类型的公司,是大公司大平台呢,还是中小型企业呢,还是创业公司呢?评估的依据,取决于自己的实力,职业道路的方向,以及对市场的认识。
不过如果不清楚也没有关系,投递公司的时候可以各类公司都投一投,大中小公司都去面一面,总之,不要把鸡蛋放在一个篮子里,多给自己制造一些机会。面试是一个很好的去接触外界,了解自己能力水平的过程,可以帮助你对市场环境有一个更清晰的认识。面试结束后通常有反问问题的环节,也可以把握住机会,多去问一问对方公司在做的东西,使用的技术栈等等。
对于我自己来说,我就把面试当成一个很好的检验自己的机会,同时让我有机会去和别的公司交流技术。所以说,平时在工作过程中,也可以隔三差五的出去面试一下,看看自己的能力水平几何,避免自己和市场脱节太久,以及温水煮青蛙的情况。
简历
接下来就是制作一份简历,关于如何制作一份简历,网络上的教程也很多了。我觉得技术简历的关键就是要把自己的做的比较出彩的项目,以及个人技术栈讲清楚,这些都是面试中问的比较频繁的几个点。另外因为自己痴迷于markdown,第一次尝试了markdown风格的简历,效果还不错,蛮清晰的。
渠道
对于招聘渠道的选择,如果有小伙伴的内推那是最好的,另外建议多注册几个app,多管齐下的去寻找面试机会,比如拉勾、boss直聘、猎聘等等。一些想去的公司的官网的招聘页,也是一个不错的信息来源。
面试准备
作为技术面试,该如何去复习准备面试呢,我觉得可以从以下几点去考虑。
数据结构与算法
为什么把这一块放在第一个讲,因为这是技术面试里非常重要,但是平时工作中又最容易忽视的一块。都说「面试造航母,工作拧螺丝」,如果不是算法岗,程序员在日常工作中算法使用场景非常有限,但这就是面试考察的一个重点。
我大概面了十几家公司,基本每家公司都会考一些算法题,或者让你说一下思路,或者直接手写程序,如果没有事先准备过,会特别的不适应,尤其是白板算法那块。
所以,我的准备建议是,面试前至少前一周,就要花时间去练习算法题,保持手感了。
首先强推leetcode网站,中文站是https://leetcode-cn.com/。leetcode是非常有名的刷题网站,里面汇聚了各大企业的经典算法题,而且可以在线提交代码,自定义测试用例,查看其他人的题解等等。如果你觉得中文站上面的题解没有自己想要的,也可以看一下外文站https://leetcode.com/ ,他们的题目顺序都是一样的,只是中文站在本土化这方面更强一点。
如果因为时间紧迫,我建议你针对以下数据结构和算法的知识点进行重点复习:
- 各种排序算法,冒泡排序,堆排序,快速排序等,时间复杂度空间复杂度分析,能做到手写。
- 常用数据结构。链表、二叉树、堆、栈等等。
- 经典算法题。(待整理)
基础知识
任何一门技术面试,基础知识一定是重中之重。对于python程序员面试来说,我觉得下面三块内容比较重要,考察的频率也非常高。
语言基础
可变对象、不可变对象、装饰器、迭代器和生成器、线程和进程、魔术方法、动态解释性、元类等。
web基础
http请求、状态码、网络安全、django处理请求的顺序、cookie和session
数据库
mysql的事务、索引、锁、性能调优,nosql数据库中redis考察的比较多。
Python基础视频
1-1 Linux基础
1-2 python基础
1-3 面向对象
1-4 项目飞机大战
这些都是在学习python基础过程中参考和学习的视频,如果大家有需要,我会在文末分享给大家
项目经验
一般对应届生来说,基础知识很重要。对于社招来说,项目经验是非常重要的一块内容。
我建议可以从下面几个角度去准备自己的项目:
项目介绍
推荐STAR模型。
S——situation,项目是什么背景下产生的 T——task,你的任务是什么 A——action,你怎么做的 R——result,结果如何
项目中的难点、闪光点
我相信每一个真实做过自己的项目的人,肯定会对自己的项目有所思考。总结一下自己在这个项目里最难的地方,以及最精彩的地方,也可以使用上面的STAR模型。
项目框架
有的面试官会要求你在白纸上把项目的框架图或者设计图画出来,这个也可以提前准备下,做到条理清晰,临场画的话很容易乱。
Python中高级视频(就业项目)
这些是在准备面试过程中参考学习python项目实战demo和源码,如果大家有需要我可以在文末分享给大家
小结
面试是一场艰难的战役,我发现在那种紧张对弈的交锋氛围中,我从来没有体会过所谓超常发挥的感觉,准备了100分,能把60分发挥出来就已经非常不错了。所以,建议每一个面试者都要提前把一些必问的东西(个人介绍、项目经验等等)提前准备好,并且模拟表达一下,以防临场紧张而忘词。
面试真题
因为自己大厂和创业公司都会去面,给我的感觉是,大厂的考察深度会更深一点,比如问你怎么用python定位一些内存满、CPU满的问题,怎么做mysql性能优化等等。而小公司问的更多是一些基础问题,以及看你之前经验的一个匹配度。
我这里从我亲身的面试经历,精选出了30道面试常考题,涉及到了python面试的方方面面,大家可以自行测试。
python基础
- python是什么样的语言,和其他语言的区别。
- python中的线程和进程,以及使用场景,你知道协程吗?
- GIL是什么,为什么会有GIL,去掉会怎样,有了GIL为什么还要给程序加锁?
- 迭代器、可迭代对象、生成器分别是什么?生成器的作用和使用场景?
- python中的装饰器是什么?如何实现?使用场景?
- python中的元类是什么?
- python中的可变对象和不可变对象之间的区别。
- python的魔术方法你知道哪些,new,init,call的区别是什么
- django的中间件是什么
- celery的原理,如何配置worker的权重
项目
- 如何定位内存过高或CPU过高的问题
- 画一下你的项目的结构
- 项目中你遇到的最大的困难是什么,是如何解决的?
- 项目中你最有成就感的地方是什么?
- 你业余是怎么学习编程的?看哪些书?有自己做过什么项目?
web
- HTTP/GET/POST/PUT/PATCH之间的区别
- 状态码的含义以及出现场景,301,302,404,500,502,504等
- cookie和session的区别和联系
- 从url请求到返回,中间经历了什么
- HTTP和HTTPS的区别,HTTPS如何进行加密的
数据库
- mysql的索引是什么,如何建立索引,B+树的结构
- mysql中的事务是什么,隔离等级是什么
- 如何优化sql语句
- mysql的性能优化等
操作系统
- 堆和栈的区别
- 什么是io多路复用
- nginx的配置
算法
- 找到整数列表的最大k个数,时间复杂度
- 输入一维数组array和n,找出和值为n的任意两个元素
- 常见的排序算法,时间复杂度分析
- 生成一个旋转矩阵
最后
最后在这里分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司21年的面试题,并且把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
面试是跳槽涨薪最直接有效的方式,备战2024金三银四,各位做好面试造飞机,工作拧螺丝的准备了吗?
<img src="
写在前面
本文的目的很简单,一句话:
用最少的时间,最高效率,让你清楚:想要拿到python offer,你需要做什么?你该怎么做?如果你不具备这些条件,我不建议你转行学python!
背景
我在土木专业挣扎了六年。刚毕业的时候,我来到了上海,进入一家设计院做土木工程师。然而土建大坑逐渐消磨掉我的热情。考虑到建筑行业日薄西山,房地产也不景气,于是我开始准备跳槽啦!
2019年初,我拿到了国内某大型互联网公司的Offer,如愿跳出土木大坑成为了一枚python程序媛,直接感受是工资翻了一翻。
跳槽的过程虽然辛苦,但是也还算顺利。所以我打算记录下来分享给大家。
我也想提醒很多向我一样冲动想转行的小伙伴,首先要考虑清楚自己是否真的不适合本行业的工作,想清楚你是否真的了解互联网了解IT?
如果你想了解更多我转行的准备以及作为一个程序媛的日常生活的话,
如果你也是跟我一样风风火火又不安分的孩子,那么改变和学习起来吧。
尝试,才是对自己最好的交代哦。
面试之前
市场环境
先说一下大环境,中国的互联网环境已经渐趋稳定成熟了,但初中级别的程序员依然很泛滥,高级程序员很缺失。所以想要在众多应聘者中脱颖而出,实力才是王道。
另外,通常的招聘季是金三银四或者金九银十,像我这个11月份去找工作的毕竟是很少了,但我觉得上海毕竟是大城市,要说市场上没有岗位是不可能的,另外在淡季,和我竞争的人也很少了。所以,基于以上的判断以及自己的勇气,我毅然觉得辞职,开始了我的python转行求职之路。
个人定位
我觉得,每一个招聘者都要对自己在市场上的位置做一个合理的评估,这样才能准确的知道自己想要找什么类型的公司,是大公司大平台呢,还是中小型企业呢,还是创业公司呢?评估的依据,取决于自己的实力,职业道路的方向,以及对市场的认识。
不过如果不清楚也没有关系,投递公司的时候可以各类公司都投一投,大中小公司都去面一面,总之,不要把鸡蛋放在一个篮子里,多给自己制造一些机会。面试是一个很好的去接触外界,了解自己能力水平的过程,可以帮助你对市场环境有一个更清晰的认识。面试结束后通常有反问问题的环节,也可以把握住机会,多去问一问对方公司在做的东西,使用的技术栈等等。
对于我自己来说,我就把面试当成一个很好的检验自己的机会,同时让我有机会去和别的公司交流技术。所以说,平时在工作过程中,也可以隔三差五的出去面试一下,看看自己的能力水平几何,避免自己和市场脱节太久,以及温水煮青蛙的情况。
简历
接下来就是制作一份简历,关于如何制作一份简历,网络上的教程也很多了。我觉得技术简历的关键就是要把自己的做的比较出彩的项目,以及个人技术栈讲清楚,这些都是面试中问的比较频繁的几个点。另外因为自己痴迷于markdown,第一次尝试了markdown风格的简历,效果还不错,蛮清晰的。
渠道
对于招聘渠道的选择,如果有小伙伴的内推那是最好的,另外建议多注册几个app,多管齐下的去寻找面试机会,比如拉勾、boss直聘、猎聘等等。一些想去的公司的官网的招聘页,也是一个不错的信息来源。
面试准备
作为技术面试,该如何去复习准备面试呢,我觉得可以从以下几点去考虑。
数据结构与算法
为什么把这一块放在第一个讲,因为这是技术面试里非常重要,但是平时工作中又最容易忽视的一块。都说「面试造航母,工作拧螺丝」,如果不是算法岗,程序员在日常工作中算法使用场景非常有限,但这就是面试考察的一个重点。
我大概面了十几家公司,基本每家公司都会考一些算法题,或者让你说一下思路,或者直接手写程序,如果没有事先准备过,会特别的不适应,尤其是白板算法那块。
所以,我的准备建议是,面试前至少前一周,就要花时间去练习算法题,保持手感了。
首先强推leetcode网站,中文站是https://leetcode-cn.com/。leetcode是非常有名的刷题网站,里面汇聚了各大企业的经典算法题,而且可以在线提交代码,自定义测试用例,查看其他人的题解等等。如果你觉得中文站上面的题解没有自己想要的,也可以看一下外文站https://leetcode.com/ ,他们的题目顺序都是一样的,只是中文站在本土化这方面更强一点。
如果因为时间紧迫,我建议你针对以下数据结构和算法的知识点进行重点复习:
- 各种排序算法,冒泡排序,堆排序,快速排序等,时间复杂度空间复杂度分析,能做到手写。
- 常用数据结构。链表、二叉树、堆、栈等等。
- 经典算法题。(待整理)
基础知识
任何一门技术面试,基础知识一定是重中之重。对于python程序员面试来说,我觉得下面三块内容比较重要,考察的频率也非常高。
语言基础
可变对象、不可变对象、装饰器、迭代器和生成器、线程和进程、魔术方法、动态解释性、元类等。
web基础
http请求、状态码、网络安全、django处理请求的顺序、cookie和session
数据库
mysql的事务、索引、锁、性能调优,nosql数据库中redis考察的比较多。
Python基础视频
1-1 Linux基础
1-2 python基础
1-3 面向对象
1-4 项目飞机大战
这些都是在学习python基础过程中参考和学习的视频,如果大家有需要,我会在文末分享给大家
项目经验
一般对应届生来说,基础知识很重要。对于社招来说,项目经验是非常重要的一块内容。
我建议可以从下面几个角度去准备自己的项目:
项目介绍
推荐STAR模型。
S——situation,项目是什么背景下产生的 T——task,你的任务是什么 A——action,你怎么做的 R——result,结果如何
项目中的难点、闪光点
我相信每一个真实做过自己的项目的人,肯定会对自己的项目有所思考。总结一下自己在这个项目里最难的地方,以及最精彩的地方,也可以使用上面的STAR模型。
项目框架
有的面试官会要求你在白纸上把项目的框架图或者设计图画出来,这个也可以提前准备下,做到条理清晰,临场画的话很容易乱。
Python中高级视频(就业项目)
这些是在准备面试过程中参考学习python项目实战demo和源码,如果大家有需要我可以在文末分享给大家
小结
面试是一场艰难的战役,我发现在那种紧张对弈的交锋氛围中,我从来没有体会过所谓超常发挥的感觉,准备了100分,能把60分发挥出来就已经非常不错了。所以,建议每一个面试者都要提前把一些必问的东西(个人介绍、项目经验等等)提前准备好,并且模拟表达一下,以防临场紧张而忘词。
面试真题
因为自己大厂和创业公司都会去面,给我的感觉是,大厂的考察深度会更深一点,比如问你怎么用python定位一些内存满、CPU满的问题,怎么做mysql性能优化等等。而小公司问的更多是一些基础问题,以及看你之前经验的一个匹配度。
我这里从我亲身的面试经历,精选出了30道面试常考题,涉及到了python面试的方方面面,大家可以自行测试。
python基础
- python是什么样的语言,和其他语言的区别。
- python中的线程和进程,以及使用场景,你知道协程吗?
- GIL是什么,为什么会有GIL,去掉会怎样,有了GIL为什么还要给程序加锁?
- 迭代器、可迭代对象、生成器分别是什么?生成器的作用和使用场景?
- python中的装饰器是什么?如何实现?使用场景?
- python中的元类是什么?
- python中的可变对象和不可变对象之间的区别。
- python的魔术方法你知道哪些,new,init,call的区别是什么
- django的中间件是什么
- celery的原理,如何配置worker的权重
项目
- 如何定位内存过高或CPU过高的问题
- 画一下你的项目的结构
- 项目中你遇到的最大的困难是什么,是如何解决的?
- 项目中你最有成就感的地方是什么?
- 你业余是怎么学习编程的?看哪些书?有自己做过什么项目?
web
- HTTP/GET/POST/PUT/PATCH之间的区别
- 状态码的含义以及出现场景,301,302,404,500,502,504等
- cookie和session的区别和联系
- 从url请求到返回,中间经历了什么
- HTTP和HTTPS的区别,HTTPS如何进行加密的
数据库
- mysql的索引是什么,如何建立索引,B+树的结构
- mysql中的事务是什么,隔离等级是什么
- 如何优化sql语句
- mysql的性能优化等
操作系统
- 堆和栈的区别
- 什么是io多路复用
- nginx的配置
算法
- 找到整数列表的最大k个数,时间复杂度
- 输入一维数组array和n,找出和值为n的任意两个元素
- 常见的排序算法,时间复杂度分析
- 生成一个旋转矩阵
最后
最后在这里分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司21年的面试题,并且把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
面试是跳槽涨薪最直接有效的方式,备战2024金三银四,各位做好面试造飞机,工作拧螺丝的准备了吗?
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
如果有问题可以在评论区留言,大家一起交流。我也会回复每一条留言,及时为大家扭转乾坤、指点迷津(拍胸脯~
" style=“margin: auto” />
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
如果有问题可以在评论区留言,大家一起交流。我也会回复每一条留言,及时为大家扭转乾坤、指点迷津(拍胸脯~