python面经_Python研发岗面经

python研发工程师,视频面:滴滴+商汤,现场面:更美app,技术范围基本是目前程序员主流必会的一些内容,包括但不限于:
python:装饰器(参考:Python 装饰器最佳实践),列表推导式,迭代器,生成器(可以参看这篇文章:Python中的三个”黑魔法“与”骚操作“),过滤器,GIL,垃圾回收机制,内存,面向对象,进程/线程/协程(Python 异步IO,详解Python进程和线程)
数据库:关系型mysql 索引,优化;非关系型redis expire过期机制,内存优化,持久化(Redis入门精讲)
Nginx:反向代理,负载均衡(参考这两篇文章:从原理到实战,彻底搞懂 Nginx!,Nginx高级篇)
网络协议:HTTP(Python Web开发),TCP/IP的三次握手 四次挥手
算法:动态规划,回溯,双指针(可以参考我前面对这三类算法的文章:最佳买卖股票-动态规划,无重复字符的最长子串,长度最小的子数组-双指针)
docker:分层机制 通信原理
kubernetes:资源,服务发现,监控,网络
滴滴
一面视频面,总时长1小时20分钟,整体比较偏重基础,但知识面很广,各个方面都会问到,面试官很年轻,注重开源贡献,面试感受三颗星***。
面试过程介绍一下自己,主要讲个人职业经历,优势/爱好,让面试官初步了解你。最近在看的书?
比着简历挨个问项目,技术实现细节,每个都问这个项目中你做过最难/最有挑战性的工作是什么,具体怎么解决的,这部分主要了解你平时的工作内容和技术深入程度,如果用到面试官不了解的技术或框架,会让你讲一下它主要是干什么的,接着找一个他熟悉的问你两者有什么不同,有开源贡献或二次封装么,还是只是调用了它的接口?
问完工作经历,会开始集中问技术,不论你简历中写的擅长/掌握/熟悉/了解还是感兴趣,各个方面,太多了有没记住的。
数据库:谈谈MySql聚簇索引和非聚簇索引……
Redis是多线程还是单线程,Redis的应用场景,特性?Redis的存储结构
网络:三次握手为什么不是二次?那又为什么不是四次?谈谈四次挥手,哪端会有WAIT_TIME状态
讲一下Nginx的反向代理和负载均衡,以及应用场景,master worker机制worker如何获取资源,master如何通知worker有资源请求,通信方式?
4. 算法,mid题现场手写,可用IDE,即使写不出来的,也要求讲思路
子集:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(LeetCode #78)。考察完全二叉树DFS/回溯法等递归操作
5. 你有什么问题想问我吗?
一定要问!别告诉我你不知道为什么,关于问什么,可以是新人培养机制,了解下工作氛围,公司目前技术栈,你将来的工作内容等。
商汤
技术面一共三面,一面视频面,总时长50分钟,面试官很友好,没有思路会给提示,但是只能对方看到我(对方说是摄像头坏了),面试感受三颗星***。
面试过程介绍一下自己,你为什么想要离职,这是一个明显的挖坑题,要点就是不要说上家公司的不好,因为面试官有理由相信你是怎么离开上家公司的,就会怎么离开他们,所以从个人身上找原因,尽量说真话。
直接开始问技术
数据库:MySql为什么使用索引的查询就能变快,‘select…from…where…’三个关键字执行的顺序是什么?a,b两列,1-10平均分布,8只有一条,我要查询3-7和8的所有数据,该如何建索引,为什么,写出来
谈一谈Redis的高性能和缓存,过期之后的数据立即被删除了么,如果不是为什么,删除机制/如何删除
Golang:怎样在go中实现一个类,你最精通的一门语言是什么
Kubernetes:Kubernetes都有哪些组件,说说什么是pod,Pod和Service之间的关系?如果我想让某一任务只能调度到特定节点上,应该怎样做?
3. 算法读取txt文件中的所有数字(包含整数和小数,文件中数字不换行),返回所有数字列表
给定三角形三个点,和一个任意点,判断该点是否在三角形内部。考察文件操作、lamda表达式和数学逻辑思维
4. 你有什么想要问我吗
更美app
一共四面,三轮技术面,一轮HR面,一次性持续3个多小时,这个时长面下来有点疲惫,面试特点是根据招聘要求进行面,所以面这家之前可以着重准备下招聘要求上的技术,面试感受四颗星****。
面试过程
面试前:
前台签到并领取一份问卷,先做题,做好前台拿给一轮面试官开始面试。问卷共3页,第一页对上面的技术能力进行自我打分(1-10分),剩下2页有三个题,总体比较简单:进制转换:将一个给定数字转换成16进制的字符串
给定一个数组arr,求数组中第2大的数,要求时间复杂度为O(n)。
SQL语句:给定一个员工表,找出email重复的行
一面:(60分钟)
注重技术基础,方面比较广,面试官很年轻,90后的样子简单做一个自我介绍
Python:讲一下装饰器原理,java有装饰器么,怎么实现的。讲一下垃圾回收机制(引用计数、循环检测算法)。Asyn函数的返回值类型,自己写一个生成器,内部需要实现哪些函数。Python和Java的异同(同:面向对象,异:语法简单,封装规则而不是标准,运行时动态语言,内存申请)。Python对内存做了哪些优化(list等内存不会立即释放,进行重复利用,节省开支),list分配的内存空间用完了,如何扩容。讲一下Python thread(实际考察GIL)。
Redis:存储结构,支持哪些数据类型,性能调优(缓存,命中率……),如何做内存优化,expire过期机制。
【python面经_Python研发岗面经】Docker:容器间通信原理
Kubenetes:k8s有哪些资源类型,Configmap是干嘛用的,讲一下Replicaset和Damonset的使用场景,如何使用。pod间通信原理,服务发现?Service mesh了解么引出一系列问题(sidercar,istio,gateway)。如何定位问题(监控:cadvisor,influxdb,grafana……)。
你有什么想要问我吗,问了研发有多少人,后端多少人,我应聘的部门后端多少人,公司技术栈有哪些
二面:(40分钟)
考察解决问题的能力和逻辑能力,面试官30-40左右,技术大佬,很严肃讲一下最近做的一个项目。
Python:讲一下线程和协程的区别(答完第一个问题,面试官表情更凝重了),做个题吧:给定一个不含重复元素的字符串(长度小于27),返回全排列组合(n!个)做完了说下思路给他讲了一下。松一口气~再做个题吧,(我哭了),判断一个数是否为n的2次幂(比较简单,顺利过关)
讲一下这两年在技术上你遇到的最有意思的事是什么(说了两个,应该是比较满意)
Mysql:索引(B+树),查询时间复杂度,做个题吧:查询每个部门薪资最高的员工(考察sql语句的group by,聚合函数max,where和having的区别)
Kubernetes:我有一个四个副本的在线服务,现在研发了新版本,该如何发布(服务的滚动升级)。
三面:(30分钟)
不再问技术细节了,是一些比较大的方向的方案。三面是部门老大,年龄30-40左右,,看起来比较友善对go感兴趣么,为什么,go和其它语言的区别,最近在学习什么新技术。
了解流式计算么(flink),一个几百万用户的网站,我想要保存用户最近5个小时访问过的页面,你知道难点在哪吗?(用户每次访问一个页面都是随时间流逝的)怎么做?(每一个网页都要计算时间),flink我不了解,一开始想到了redis的过期时间,后面想过istio流量监控啥的。
Fastapi源码看过吗,后面问啥记不太清了……
你有什么想要问我的吗,问了到部门后我的工作内容,目前核心的技术栈……
叫来了约我面试的hr,让我填一份问卷(工作经历,教育背景,目前住址,老家地址,上家老板和hr姓名电话,目前薪资,期望薪资……)
四面:(60分钟)
HR水平很高,很容易被带到坑里去,很有耐心
说一下这两年工作对你影响最大的项目,项目背景,人员组成,过程总结,结果,效益,收获了什么
你的职业规划,你为什么从上家公司离职,你想要进到一家什么样的公司
你对自己的期待,有没有标杆/榜样,介绍下他
两个场景题:第一个自问自答:如果我们身份互换,你现在最想问我什么,那你会怎么回答(可别给自己挖坑)。第二个忘记了
你对自己的评价,优缺点
你了解我们公司么,了解多少,你会使用我们的产品么(不了解的话去之前最好了解下的)
……可太多了,hr说话也快,被连环追问的感觉简直不要太酸爽
你有什么想问我么
九州云
一面电话面,不知道有没有二面,总时长40分钟,无算法题,面的广度比不上滴滴,但深度可以,面试官技术能力强,注重编码能力,面试感受四颗星****。
面试过程简单介绍一下自己?
开始问项目,具体怎么实现的,所以在面试之前自己一定要回顾一遍相应的的技术,为什么要选这个而不是其它的,以及他的优势和劣势分别是什么。
技术问题,你简历中专业技能一项,一定会在项目经验之后挨个问你,所以精通就是精通,了解就是了解,不要给自己挖坑!微服务:什么是微服务,微服务的好处和坏处?
容器技术:Docker网络模式,分层的好处和坏处,应用场景?
服务编排:Kubernetes的网络模型,K8s的优劣,Pod/Service之间通信,Ingress和Service之间的区别,了解Linux么,自己的笔记本是否是Linux系统?
Python:说一说with关键字的用法,如何自己清除资源,自己实现一个函数,要用with打开,需要注意什么
说一说装饰器,如何实现一个装饰器,如何调用一个被装饰的函数
数据库:说一说MySql、Redis、MongoDB、Zookeeper之间的区别,以及他们的使用场景和特点。
API:如何提高吞吐量,如何发现某个接口吞吐性能不佳,如何解决,说一说解决思路?
什么是Restful API,和普通http url有什么区别,get/post/put/delete有什么区别,用过patch么?
谈一谈swagger框架,如果yaml文件有改动,框架需要重新生成么,如果不用需要修改哪几个文件?你为什么想从现在的公司离职,你的职业规划是什么,你最近有没有在学什么技术,你有技术博客么,方便告诉我地址么
你有什么问题想问我吗?
MetaApp
面试之前先做一套算法测试题,可查网要求全对会议室:输入是一个数组, 所有会议的开始和结束时间。输出一共需要多少个会议室。
考察堆和排序等操作
2. 部门协调:
输入
`departments`: dict,key是部门名, value是每个部门对应所有员工ID数组
`required_department`: dict, 该任务需要参与的部门和需要的人数
输出所有可能的员工组合
考察点和上面滴滴的求子集类似,排列组合问题
考察对动态网页的爬虫相关
SmartX
面试之前先做一套选择测试题,不可上网,60分钟要求正确率>80%,考察比较全面,重点考察编程语言和网络协议,偏重基础。

    推荐阅读