python
1、装饰器,怎么实现、怎么调用 参考:Python 装饰器最佳实践
2、列表推导式
3、迭代器,生成器(可以参看这篇文章:Python中的三个”黑魔法“与”骚操作“),过滤器,
3、自己写一个生成器,内部需要实现哪些函数
3、Asyn函数的返回值类型
3、lamda表达式
3、GIL
4、垃圾回收机制
5、内存管理、内存优化(list等内存不会立即释放,进行重复利用,节省开支)
6、list分配的内存空间用完了,如何扩容
6、面向对象
7、进程/线程/协程(Python 异步IO,详解Python进程和线程)
8、线程和协程的区别
8、文件操作
9、说一说with关键字的用法,如何自己清除资源,自己实现一个函数,要用with打开,需要注意什么
数据库
mysql:
原理:
1、索引(B+树)
1、查询时间复杂度
1、为什么索引能使查询变快
1、‘select…from…where…’三个关键字执行的顺序是什么
2、MySql聚簇索引和非聚簇索引
3、优化
实战:
1、a,b两列,1-10平均分布,8只有一条,我要查询3-7和8的所有数据,该如何建索引,为什么,写出来
1、给定一个员工表,找出email重复的行
1、查询每个部门薪资最高的员工(考察sql语句的group by,聚合函数max,where和having的区别)
redis:
1、expire过期机制、过期之后的数据立即被删除了么,如果不是为什么,删除机制/如何删除
2、内存优化
3、存储结构、支持哪些数据类型
4、持久化(Redis入门精讲)
5、是多线程还是单线程
6、应用场景
7、特性
8、谈一谈Redis的高性能和缓存
9、性能调优(缓存,命中率……)
数据库:说一说MySql、Redis、MongoDB、Zookeeper之间的区别,以及他们的使用场景和特点。
运维
Nginx:
1、反向代理
2、负载均衡(参考这两篇文章:从原理到实战,彻底搞懂 Nginx!,Nginx高级篇)
3、以上两种情况的应用场景
4、master worker机制worker如何获取资源
5、master如何通知worker有资源请求,通信方式?
docker:1、分层机制 、好处、坏处
2、容器间通信原理
3、服务发现
4、网络模式
kubernetes:1、资源
2、服务发现
3、监控
4、网络、网络模型
5、Kubernetes都有哪些组件,说说什么是pod,Pod和Service之间的关系
6、Pod/Service之间通信
7、Ingress和Service之间的区别
7、Configmap是干嘛用的
8、讲一下Replicaset和Damonset的使用场景,如何使用
9、优劣
实战:
6、如果我想让某一任务只能调度到特定节点上,应该怎样做
9、Service mesh了解么引出一系列问题(sidercar,istio,gateway)
10、如何定位问题(监控:cadvisor,influxdb,grafana……)
11、我有一个四个副本的在线服务,现在研发了新版本,该如何发布(服务的滚动升级)。
了解Linux么
网络协议:
1、HTTP(Python Web开发)
2、TCP/IP
1、三次握手
1、三次握手为什么不是二次?那又为什么不是四次?
2、四次挥手,哪端会有WAIT_TIME状态
3、
算法
1、动态规划
2、回溯
3、双指针(可以参考我前面对这三类算法的文章:最佳买卖股票-动态规划,无重复字符的最长子串,长度最小的子数组-双指针)
4、mid题现场手写,可用IDE,即使写不出来的,也要求讲思路
5、子集:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(LeetCode #78)。考察完全二叉树DFS/回溯法等递归操作
6、读取txt文件中的所有数字(包含整数和小数,文件中数字不换行),返回所有数字列表
7、给定三角形三个点,和一个任意点,判断该点是否在三角形内部
8、将一个给定数字转换成16进制的字符串
9、给定一个数组arr,求数组中第2大的数,要求时间复杂度为O(n)
10、给定一个不含重复元素的字符串(长度小于27),返回全排列组合(n!个)
11、判断一个数是否为n的2次幂
12、全对会议室:输入是一个数组, 所有会议的开始和结束时间。输出一共需要多少个会议室。
13、考察堆和排序等操作
14、部门协调:
输入
departments
: dict,key是部门名, value是每个部门对应所有员工ID数组
required_department
: dict, 该任务需要参与的部门和需要的人数
输出所有可能的员工组合
15、字节算法题汇总:https://www.nowcoder.com/discuss/445445?channel=2001&source_id=home_feed
架构设计:
1、了解流式计算么(flink),一个几百万用户的网站,我想要保存用户最近5个小时访问过的页面,你知道难点在哪吗?(用户每次访问一个页面都是随时间流逝的)怎么做?(每一个网页都要计算时间),flink我不了解,一开始想到了redis的过期时间,后面想过istio流量监控啥的
2、API:如何提高吞吐量,如何发现某个接口吞吐性能不佳,如何解决,说一说解决思路?
其他
1、注重开源贡献
2、最近在看的书?最近在学什么技术?有技术博客吗?(考察点:是否好学和技术深入程度)
3、简历上的每个项目挨个问:
1、技术实现细节 (考察点:经历真实性、水平深度)
2、这个项目中你做过最难/最有挑战性/最有意思的事的工作是什么,具体怎么解决的(考察点:工作内容和技术深入程度)
4、有没有二次封装还是只调用了他的接口(考察点:是否懂得原理)
5、对比不同的技术框架、不同的组件特性,(考察点:架构方面的考虑)
6、你有什么问题想问我吗?答案:一定要问!
1、新人培养机制
2、工作氛围
3、公司目前技术栈
4、将来的工作内容
5、研发有多少人,后端多少人,我应聘的部门后端多少人
8、看起来比较友善对go感兴趣么,为什么,go和其它语言的区别,最近在学习什么新技术。
9、Fastapi源码看过吗
11、微服务:什么是微服务,微服务的好处和坏处
12、什么是Restful API,和普通http url有什么区别,get/post/put/delete有什么区别,用过patch么?
13、谈一谈swagger框架,如果yaml文件有改动,框架需要重新生成么,如果不用需要修改哪几个文件
14、动态网页的爬虫相关
hr:
1、职业规划
10、你了解我们公司么,了解多少,你会使用我们的产品么
7、离职原因 答案:要点就是不要说上家公司的不好,因为面试官有理由相信你是怎么离开上家公司的,就会怎么离开他们