如何面试Python后端工程师?

http://blog.csdn.net/yueguanghaidao/article/details/49638261

前一段时间有人在知乎提了http://www.zhihu.com/question/33398583,如何面试Python工程师?我斗胆回答了一下,  http://www.zhihu.com/question/33398583/answer/59017861

吃午饭的时候我就一直在想这个问题,我觉得重点不是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是啥鸟?  是否紧跟时代潮流?逛不逛微博,刷不刷知乎?

可能你觉得我问的好细,但这好多都是平常经常遇到,并需要解决的,细节更能体现一个人。

如果你觉得小kiss,欢迎投简历给我yihaibo@longtugame.com,龙图游戏运营支持中心数据分析部招人;觉得有点问题,那还等什么,赶快来和我交流交流。

更新:讨论区挺热闹,有人说好简单,有人说好难,其实我觉得这只适合面试2~3年工作经验的后端工程师。真的没有问  很难的题目,只是可能你平时没有注意。  在这里我推荐几本书吧  python参考手册,绝对让你更上一层楼  图解密码技术,密码入门不二之选  mysql技术内幕第五版,有点厚当手册读读,要有耐心,高性能mysql也强烈建议读读  effective tcp/ip programming

为什么评论区有这么大差异?我想是个人经历不一样吧,如果是搞web的对操作系统这块和密码技术会偏弱,但如果是系统工程师或是游戏服务端这块会明显偏强。

六.后记

最近我也面试了不少童鞋,我发现能达到要求的真的少之又少,很多hr都说Python是最难招聘的岗位,我想是有道理的,这真的很值得我们去深思?

我想有一部分原因是Python这门语言造成的,会写Python的人很多,但写的好的人很少,大部分都把Python当做脚本来写,缺乏面向对象,模式的思想。想想Java,大家都习惯了接口,实现分离,设计模式在Java中也喊了很多年,尤其是ssh三大框架一出,用着用着就理所当然的认为就该这么做,虽然也有点坏处,但对企业级Java开发无疑是一大进步。

反观Python,尤其是生成器,协程,元类给Python注入了很大的灵活性,想写的Pythonic有不小难度,但其实Python高级特性就那么几个,干掉了也就没有了。

当你觉得Python遇到了瓶颈,不妨停下来好好想想。研究研究设计模式,想想重构,了解领域驱动设计,敏捷开发,再回来读读以前写的代码,当眼界变高了,代码也就美了。

当然思想的提高不是一朝一夕,模式,原则会经常让你纠结,纠结就会思索,思考就走出了自己的路,当然条条大路通罗马。

数据库等存储技术是研发工程师迈不过的坎,对关系数据库以mysql举例来说,你必须清楚的知道什么字段选择什么类型,类型字节大小,限制条件,这东西也很容易理解,多想想即可,比如set类型,要支持交并等操作,1个字节只能存8个类别。数据类型搞定了,下面就是索引了,mysql索引种类?主键,唯一索引,普通索引。索引类别,BTree索引,hash索引。索引的优缺点,mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情况,比如mysql子查询慢等。其实到这里研发工程师就差不多,当然你可以继续深入下去,比如读写分离,集群管理,甚至一些参数调优。

革命尚未成功,同志任需努力!!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

编码过程中需尽量避免的 7 条捷径

1. 复制代码 “我认为最有价值的规则是避免重复。有且仅有一次是极限编程里的说法。- Martin Fowler 这很容易成为头号规则。如果你想要你的代码坚如磐...

2126
来自专栏我的博客

面试和笔试汇总

最近忙着找工作,也没有更新博客,今天一个朋友让我赶紧把博客更新下,说说最近的面试情况也可以好给他们一个参考,这就整理出来给大家分享~~ 笔试题目公开 get和p...

4196
来自专栏牛客网

阿里 & 酷家乐:实习生面试

最近海投了十家公司,暂时有阿里两面(已凉)、酷家乐两面(大概凉了)、网易一面。前两个都是基础知识发挥得还可以,两家公司二面都凉凉。 阿里一面(3.21 26mi...

5254
来自专栏程序人生

Pipe 之美

Unix 三大宝是 C,file 和 pipe。C的重要性自不必说,如果 Lisp 是编程语言之母,那么 C 就是编程语言他爹。file 是 unix 世界的夸...

4097
来自专栏牛客网

【2018秋招iOS面试总结】(渣渣本科生)

本人是非985211学校,非计算机专业,技术一般,基础较差。 最开始秋招的时候,一线互联网基本上都投了,但是很多都被刷了,有的是刷了学校,有的是刷了四级(我四级...

3879
来自专栏钱曙光的专栏

一周极客热文:200 行 C 代码编写你的第一个垃圾收集器

一名程序员在许多事物缠身,心里烦乱的情况下如何排解呢?Google Dart团队的一名工程师通过编写一个“垃圾收集器”来调整自己,而且起到了一个非常好的效果,但...

2019
来自专栏C语言及其他语言

学习C语言编译器的选择

很多初学C语言的同学可能遇到的首要问题,就是选择编译器,用什么编程软件? 然而通过了解之后发现有那么多编程软件,什么VC6.0,Dev ,CodeBlocks,...

3517
来自专栏企鹅号快讯

python资料汇总

摘要:重新整理汇总,内容包括长期必备、入门教程、练手项目、学习视频。 ? 一、长期必备。 1. StackOverflow,是疑难解答、bug排除必备网站,任何...

2479
来自专栏挖掘大数据

如何成为一名10x的数据分析师?

不知道大家以前听没听说过“10x Developer”这个词,如果你连听都还没听说过,那可真是时候考虑放弃自己的程序猿事业了。就像传说一样,一些程序猿的战斗力能...

2388
来自专栏HBStream流媒体与音视频技术

借用PortAudio采集和播放音频,实现双路混音器

3885

扫码关注云+社区