python web后端开发工程师的面试总结

原创 2018年02月13日 17:32:25


面试的几家:北京的两家创业公司,规模均在40-50人之间;果壳(止步于电话面,拉钩投的);知乎(止步于电话面,论坛发帖后的内推);爱奇艺(拉钩上投的);杭州的网易(同学内推)。


面试这一轮下来,最大的感受就一个:平时一定要坚持每天都码点代码。就算再烂的项目,也要坚持上传github……真的,只要你能坚持一周有5天以上都能持续上传Git,半年下来,面试官绝对对你刮目相看。


我就是因为平时只关注做自己的小博客系统,而没做其他的部分,导致爱奇艺倒在了手写代码上面……哎,忧伤……平时多刷刷leetcode,看看剑指offer/面试金典,都是套路啊~~


面试这几家公司所遇到的面试/笔试题,目前还能记住的如下。虽然可能绝大部分都是基础,但希望大家不要只是看看就过去了,最好还是假装你被问到这个问题,你来把答案说出来或写出来:(不按公司分了)




python语法以及其他基础部分


可变与不可变类型; 
浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现; 
__new__() 与 __init__()的区别; 
你知道几种设计模式; 
编码和解码你了解过么; 
列表推导list comprehension和生成器的优劣; 
什么是装饰器;如果想在函数之后进行装饰,应该怎么做; 
手写个使用装饰器实现的单例模式; 
使用装饰器的单例和使用其他方法的单例,在后续使用中,有何区别; 
手写:正则邮箱地址; 
介绍下垃圾回收:引用计数/分代回收/孤立引用环; 
多进程与多线程的区别;CPU密集型适合用什么; 
进程通信的方式有几种; 
介绍下协程,为何比线程还快; 
range和xrange的区别(他妹的我学的py3…); 
由于我有C/C++背景,因此要求用C来手写:将IP地址字符串(比如“172.0.0.1”)转为32位二进制数的函数。


算法排序部分



手写快排;堆排;几种常用排序的算法复杂度是多少;快排平均复杂度多少,最坏情况如何优化; 

手写:已知一个长度n的无序列表,元素均是数字,要求把所有间隔为d的组合找出来,你写的解法算法复杂度多少; 
手写:一个列表A=[A1,A2,…,An],要求把列表中所有的组合情况打印出来; 
手写:用一行python写出1+2+3+…+10**8 ; 
手写python:用递归的方式判断字符串是否为回文; 
单向链表长度未知,如何判断其中是否有环; 
单向链表如何使用快速排序算法进行排序; 
手写:一个长度n的无序数字元素列表,如何求中位数,如何尽快的估算中位数,你的算法复杂度是多少; 
如何遍历一个内部未知的文件夹(两种树的优先遍历方式)

网络基础部分




TCP/IP分别在模型的哪一层; 
socket长连接是什么意思; 
select和epoll你了解么,区别在哪; 
TCP UDP区别;三次握手四次挥手讲一下; 
TIME_WAIT过多是因为什么; 
http一次连接的全过程:你来说下从用户发起request——到用户接收到response; 
http连接方式。get和post的区别,你还了解其他的方式么; 
restful你知道么; 
状态码你知道多少,比如200/403/404/504等等;

数据库部分

MySQL锁有几种;死锁是怎么产生的; 
为何,以及如何分区、分表; 
MySQL的char varchar text的区别; 
了解join么,有几种,有何区别,A LEFT JOIN B,查询的结果中,B没有的那部分是如何显示的(NULL); 
索引类型有几种,BTree索引和hash索引的区别(我没答上来这俩在磁盘结构上的区别); 
手写:如何对查询命令进行优化; 
NoSQL了解么,和关系数据库的区别;redis有几种常用存储类型;

Linux部分

讲一下你常用的Linux/git命令和作用; 
查看当前进程是用什么命令,除了文件相关的操作外,你平时还有什么操作命令; 
(因为我本人Linux本身就很水,只会基本的操作,所以这部分面试官也基本没怎么问。。反正问了就大眼瞪小眼呗)



django项目部分

都是让简单的介绍下你在公司的项目,不管是不是后端相关的,主要是要体现出你干了什么; 
你在项目中遇到最难的部分是什么,你是怎么解决的; 
你看过django的admin源码么;看过flask的源码么;你如何理解开源; 
MVC / MTV; 
缓存怎么用; 
中间件是干嘛的; 
CSRF是什么,django是如何避免的;XSS呢; 
如果你来设计login,简单的说一下思路; 
session和cookie的联系与区别;session为什么说是安全的; 
uWSGI和Nginx的作用; 
(我发现基本不问django实现细节相关的东西。。或者问也问的很少,哎,之前准备的方向完全错了)



洋洋洒洒写了一个小时,发现还是有很多细节问题都已经忘了。。哎,自己的笔记做的还是不行。不过这些问题如果你能都答上来,起码我觉得你应该可以去试试面试初级web后端了,good luck!



----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------



如何面试Python后端工程师?

前一段时间有人在知乎提了http://www.zhihu.com/question/33398583,如何面试Python工程师?我斗胆回答了一下, http://www.zhihu.com/que...
  • yueguanghaidao
  • yueguanghaidao
  • 2015年11月04日 15:07
  • 20198

一个初级python web后端开发工程师的面试总结

先介绍下我的情况:通信背景,工作一年多不到两年。之前一直在做C++的MFC软件界面开发工作。公司为某不景气的国企研究所。(喏,我的工作经验很水:1是方向不对;2是行业有偏差)。然后目前是在寻找pyth...
  • AyoCross
  • AyoCross
  • 2017年02月22日 22:23
  • 11375

python工程师(web开发和爬虫方向)-面试经历

一、这家公司主要对亚马逊商品进行数据采集,问的问题比较杂。 是否了解线程的同步和异步? 是否了解网络的同步和异步? 链表和顺序表储存时各自有什么优点? 使用redis搭建分布式系统时如何处理网络延迟和...
  • weixin_39198406
  • weixin_39198406
  • 2017年10月19日 22:57
  • 18543

JavaWeb工程师面试(一)

写在前面:         匆匆忙忙地来到北京,便开始了我的找工作实习生活。确实没有什么找工作的经验,也没有在大城市生活过的经历,并且也确实没有做好充分的知识准备,感觉就是来当炮灰似的。但是,本人性...
  • u011422744
  • u011422744
  • 2015年09月11日 10:00
  • 2054

连续3次面试暑期实习之后的总结(Java工程师/Web后台开发)

本人计算机科学与技术专业(移动互联,主攻Web开发)大三学生,最近想找暑期实习,所以网上投了一波,最后收到了3个面试通知。 简单说就是打击挺大,虽然有会的,不过不会的也很多。果然有些东西得接触了才知道...
  • JNBINW
  • JNBINW
  • 2016年06月17日 16:56
  • 1650

后端开发面试题大集合

http://www.nowcoder.com/discuss/3614?type=1&order=1&pos=18&page=1  第一集 http://www.nowcoder.com/disc...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2016年02月24日 15:32
  • 4076

如何面试Python 后端工程师(持续更新)

看到“如何面试Python后端工程师”这个问题下一位大牛罗列的问题,感觉挺有价值。现在记在这里,找出这些问题的答案,持续更新。 一.语言 1.推荐一本看过最好的python书籍? 拉开话题好扯淡 ...
  • changqing1234
  • changqing1234
  • 2017年03月30日 11:34
  • 1089

2017年JAVA后端web开发工程师面试各大公司比较【热门的公司基本都有】

从某国内一线的某公司离职后,踏踏实实休息了几个月,年后开始了找工作之旅。本着面得多选择多的目的,也为了看看各大公司的不同情况,便开始了漫长面试之旅。下面尽量把面试过的公司情况都列出来,供年后求职的兄弟...
  • batou3377
  • batou3377
  • 2017年02月22日 21:20
  • 1087

后端开发面试经验分享

1. 什么是面向对象: 所谓面向对象是指,编程语言将具体的参数和函数封装为一个实体,每一个实体称之为一个对象,程序员更关心的是每个对象如何设计,以及如何处理他们之间的关系,面向对象的语言特点是支...
  • u014800380
  • u014800380
  • 2016年12月16日 22:05
  • 1084

JavaWeb后端工程师技能图

  • fanren224
  • fanren224
  • 2017年12月16日 00:57
  • 77
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python web后端开发工程师的面试总结
举报原因:
原因补充:

(最多只允许输入30个字)