语言Python找后端开发面试历程:网易&&滴滴&&旷视
本人技术栈为Python后端开发,下面所有公司都是应聘的后台研发岗位,面经如下:
老虎证券(挂)
一面
python基础部分:
- 迭代器生成器 生成器是如何实现迭代的
- list实现
- import一个包时过程是怎么样的?
- 装饰器实现
- 菱形继承
- 内存垃圾回收:分代回收细节
- 项目具体
- mysql b+树
- wsgi
二面
- 堆排序
- 比较c语言和Python语言中的异步
- epoll
- tornado框架
- 求二叉树深度
- mysql联合索引
- wsgi
- uwsgi进程模型
网易互娱(offer)
一面:
面试最开始做的笔试题据说需要保密。。就不发了。。
- 自我介绍
- Python里的eval
- Python里的装饰器
- 虚拟内存与物理内存区别
- Top k问题
- 如何用两个栈表示一个队列
- 如何判断链表有没有环
- epoll
- 100个石头,每个人一次可以摸1-5个,甲先摸,问甲有没有必赢的方法;
- TCP与UDP的区别
- TCP的断开过程
- 二叉树的镜像
工作需求相关面试官建议精通Linux,建议精通socket
二面:
- PythonGIL锁
- C++ C 内嵌Python代码
- 有没有读Python源码
- Python垃圾回收
- Python内存泄露
- 游戏模型如何确认人身上的胶囊体是否被激光射中(主要就是扯这个题)
- 编译原理相关
今日头条(挂,后来被捞了但已经签三方了,算是dream company)
全靠回忆,想不全了,供参考
一面:
- 设计并实现字典,常用操作,get, set, delete
- page ***
- no-delay
- time-wait
- 用过哪些存储相关的第三方库
二面:
- HTML5的一些特性
- 如何强制要求浏览器不走缓存
- 事务,隔离级别
- 索引相关
- io多路复用
- 手撕题:二维数组找某元素出现的所有位置,元素可能重复。
三面:
- 论文相关
- 一个感觉应该是考产品经理的题
- 讲下博客第一篇的BFPRT算法
- 海盗投票智力题(具体题目太久忘记了)
滴滴(offer)
一面:
- tcp 三次握手
- 如果一个客户端不理会服务端发来的ack,一直重发syn怎么办?(我理解为类似syn洪水攻击)
- 拥塞控制 流量控制
- socket编程 raw_socket
- 从用户态到内核态的汇编级过程
- 中断以及系统调用
- 不用中间元素交换两个元素的方法,(答:使用异或),又问:不使用异或有什么缺点。。
- 亿级元素top k,答:k大小小顶堆,又问:如何多线程改进
- 全局变量和局部变量都保存在哪儿
- coding:递归翻转链表。。
二面
- 网页相似性比较
- LRU(O(1)时间复杂度)
- rpc
- 多个有序数组合并为一个
- 服务感知(客户端如何感知服务端状态)
三面
- 如果地球自转速度降低一半,会怎么样
- 项目,讲具体场景实现,情景题
- http cookie具体所有相关内容
- http传输一个二进制文件的所有过程
- coding:顺时针打印数组
旷视面经 (offer)
没有及时记录,只能想起来这么多了
一面
- 快排
- tcp三次四次
- 二叉树的重建,能否利用前序和后序重建二叉树?不能的话给出反例
- flask和Django区别
- 项目问题
二面
- free -m显示里的buffer是指什么
- restful
- tcp相关
- http和https相关,ca证书内容,SSL加密内容
- 手撕代码题忘了
- 4G内存,16G数据,找中位数
三面
- 扣项目,lookup相关数据结构,预估数据大小
- 实现字典
四面
- 项目相关闲聊
- 手撕题两道:
- 每个员工都有一个直属上级,找指定员工所有下属
- n个数据块, k个***位,数据块只有在***位里才能访问,给定数据块序列,找最少将数据块加入***的次数;
总结:
秋招就面试了五家公司,能拿到三个offer真的是运气爆棚。还有去哪儿和ihandy以及快手发了面试邀请,因为懒没有去面,表示非常非常感谢。
有老哥私信问我Python后端路好不好走?怎么走?我就自己秋招体验大概说一下。
我选Python作为自己的主要语言有两个原因,一个是接触最多,用起来也最顺手;二是自己有点儿拖拉,等真正回神儿感觉秋招已经到眼前了,也没有时间改了,就只能一条路走到黑。虽然,有不少公司已经明确写了招聘Python工程师,但跟Java以及c++比起来,还是不能打。所以如果你有足够的时间,尽量还是学java吧,虽然求职人数最多,但是机会也最多。 我曾经尬面过一家银行类的公司,因为太简短,我就没把这个当成一次面试,对话内容如下:
面试官:同学,我看你官网投递没有填写意向职位,你的技术栈大概是怎样的呢?
我: 不好意思,我技术栈主要是Python后端,当时是看到没有对口的岗位,所以就放弃了完善简历,但没想到收到了笔试邀请,就认真做了下。没想到收到了面试邀请。
面试官:那你虽然是Python技术栈,但是面试我还是要问你Java和C++的,你看咱们还继续吗?
我:那好吧,就不继续了,很不好意思浪费您时间了。
所以有可能的话还是深入学习Java以及C++吧。
如果你头铁,真的就是想走Python路线,那么我的建议如下:
入门:Python核心编程第二版,Python基础教程,官方tutorial,这三个三选一就行了;
进阶:Python cookbook(偏实践的好书), fluent Python
还有一本很实用的书叫做The Python3 standard library by example
如果你有时间,你可以读一读很有意思的增强建议:比如做python后端怎么可能不读一读PEP 3333?
如果你还有时间,你可以看一下cpython对常用数据结构比如list和dict的实现。
在读书的期间,为了敲开实习的大门&&填充简历,你可以用Django、flask或者tornado做一个小项目。
在秋招中,我还发现了一个很有意思的现象:大厂除了网易,都没有问我Python基础,更没有对我的个人项目有啥关注。中小厂则是会问的比较多(我是根据老虎证券的面试套路猜的)。我问过旷视的面试官,为什么没有问下语言基础以及我做的Django项目,他跟我说基础以及算法还是最重要的。我现在也觉得基础好+代码实现能力强才是王道,当然语言你能精通几个就精通几个,没有坏处。
说道手撕代码,把剑指offer刷个两遍,应付面试就没有问题了。至于笔试,我推一下牛客左神的算法课。如果你时间充足,可以从今天开始就每天刷几道LeetCode,既娱乐又能进步。
至于操作系统以及算法以及网络以及数据库相关的基础,牛客上有很多大佬都已经给出了自己的书单,照着看就好了。
菜鸡一个,运气不错,大家共勉。
#面经##Python工程师##滴滴##网易##老虎集团##校招##旷视#