随着互联网的发展,python语言现在变得越来越火爆,Python程序员越来越受到大家的青睐!那么想进入Python行业,面试时需要注意些什么问题呢?我们在参加Python开发岗位面试的时候都要做哪些准备?一般Python技术方面的面试会问哪些问题?
今天,我们从2位面试官的角度来看看,参加 Python 开发岗面试需要做哪些准备。
(一)
我之前在豆瓣负责过一段时间我们组的技术面试。由于现在不再去面试,可以爆一爆。
- 我从来不问google可获得的答案的问题, 只是问问面试者「在过去的工作中,遇到的Ta认为较有成就感的一件事情是什么」和「如果出现了一个google不到的问题,你会怎么解决」这样的问题。
- 我从来不问操作系统等和Python无关的话题,优先是我不怎么问和工作太无关的话题,有些东西用不到很多就被会遗忘,挑起来这种问题其实挺无聊;其次我是非计算机专业毕业,问的东西说不定我自己都没有把握,那就不出来献丑了。我只关注面试者的学习能力和解决问题的方式,说白了,是不是就是看他是不是「聪明的人」。
- 不问面试者的短处。我在自己被面试的时候有过这种精力,面试者问他擅长的内容,我不一定搞的定,如果反过来面试Ta,我也会灭掉Ta。所以我会尽力寻找面试者的优势和优点,尤其是对方已经明确承认。其实很多经验和能力,只是需要一个机会和环境,所以我不想放过任何一个合适的人。
- 面试者不会Python也没有关系。面试者的主动性和学习能力觉得更重要,如果他在其他领域能证明做的不错或者能让我感觉到这个一个未来有潜质成为优秀工程师的人,不会Python没有关系。 嗯目前看来,我没有看错过。
- 我从来不问Python语法这种看书和google就能学会的问题,我只想了解Ta是否愿意去学。举个例子,我会让面试者「讲讲日常开发中都用到了那些Python内置的模块」,基本上说完我就能评估出他的能力和风格,继而就是再问一些问题去验证我的评估是不是准确。
- 较后,我一般都会和面试者细聊一个Ta认为在过去的工作或者自己开源的项目中较熟悉的一个,从项目设计、踩过的坑儿、开发周期以及如何安排、如何确定需求、如何和其他人协作等方面,较后评估下Ta是否能很容易的融入到我们现在的团队,大家是否可以接受Ta,对工作不负责的、没有用心工作的、没有团队意识的、沟通能力有缺陷的就放弃掉,对性格上容易发生冲突的、不适合团队合作的我就得考虑下,未来也会如实反馈给HR。
(二)
吃午饭的时候我就一直在想这个问题,我觉得重点不是Python而是后端工程师,因为Python只是系统的一部分,linux基础操作要熟吧,sql要懂吧,消息队列要知道吧,git要熟悉吧......木桶理论,每一环都不能落下,精通其中一两环就更好了。
基础功扎实,新东西学得快,代码写得溜,命令敲得顺,bug解的好,妈妈再也不用担心我天天加班了~~~
一.语言
1.推荐一本看过较好的python书籍? 拉开话题好扯淡
2.谈谈python的装饰器,迭代器,yield?
3.标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗?
4.python适合的场景有哪些?当遇到计算密集型任务怎么办?
5.python高并发解决方案?我希望听到twisted->tornado->gevent,能扯到golang,erlang更好
二.操作系统
可以直接认为是linux,毕竟搞后端的多数是和linux打交道。
1.tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗?
2.time_wait是什么情况?出现过多的close_wait可能是什么原因?
3.epoll,select的区别?边缘触发,水平触发区别?
三.存储
存储可能包含rdbms,nosql以及缓存等,我以mysql,redis举例
mysql相关
1.谈谈mysql字符集和排序规则?
2.varchar与char的区别是什么?大小限制?utf8字符集下varchar较多能存多少个字符
3.primary key和unique的区别?
4.外键有什么用,是否该用外键?外键一定需要索引吗?
5.myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?
6.索引有什么用,大致原理是什么?设计索引有什么注意点?
redis相关
1.什么场景用redis,为什么mysql不适合?
2.谈谈redis的事务?用事务模拟原子+1操作?原子操作还有其它解决方案吗?
3.redis内存满了会怎么样?
四.安全
web安全相关
1.sql注入是怎么产生的,如何防止?
2.xss如何预防?htmlescape后能否避免xss?
3.csrf是什么?django是如何防范的?
密码技术
1.什么是分组加密?加密模式有哪些?ecb和cbc模式有什么区别?为什么需要iv向量?
2.简单说说https的过程?
3.对称加密与非对称加密区别?
3.如何生成共享秘钥? 如何防范中间人***?
五.杂
是否关注新技术啊?golang,rust是否了解?numpy,pandas是啥鸟?
是否紧跟时代潮流?逛不逛微博,刷不刷知乎?
可能你觉得我问的好细,但这好多都是平常经常遇到,并需要解决的,细节更能体现一个人。
有人说好简单,有人说好难,其实我觉得这只适合面试2~3年工作经验的后端工程师。真的没有问很难的题目,只是可能你平时没有注意。
在这里我推荐几本书吧
《python参考手册》,绝对让你更上一层楼
《图解密码技术》,密码入门不二之选
《mysql技术内幕第五版》,有点厚当手册读读,要有耐心
为什么大家的意见有这么大差异?我想是个人经历不一样吧,如果是搞web的对操作系统这块和密码技术会偏弱,但如果是系统工程师或是游戏服务端这块会明显偏强。
想学习数据分析,数据爬虫,人工智能,深度学习的同学,欢迎加入python学习交流q群250933691,分享我精心准备的Python学习资料,0基础到进阶!希望你们在学习Python道路上少走弯路!加油!
原文地址:http://blog.51cto.com/14068431/2326121