1、4.3 线上一面 55 min
问题
- python浅拷贝和深拷贝
- django的生命周期
- 进程和线程的区别
- 知道哪些设计模式
- 分布式系统中的单例任务是怎么实现的
- 如何保证分布式锁唯一,在不适用存储中间件的情况秀下如何实现分布式锁
- pg与mysql的区别有哪些
- 如何优化慢查询语句
- 快速排序的时间复杂度
写题
- 给定一个python字典,如何实现key, 和value的转换
这里我一开始给了一个字典,直接一行转换完成了。但是面试官不满意,希望我考虑到所以的异常情况再接着写。假设这是一个公共的sdk方法。如何更好地封装这个函数,以及异常情况下怎么处理,这个讨论了不少时间然后再做的下一题
- 用python实现一个单例模式的类
- 给了一个长度为m的列表,返回前n小的元素,要求比较次数尽可能少
2、4.6 线上二面 75min
二面先问了下项目,然后深挖了下,都比较偏底层。
问题
- 因为聊到之前做的项目的数据会从Kafka接受数据,问了问每次处理的数据量是多大,两题数据同时写入的情况有没有遇到过,怎么处理
- 写sql语句: 在数据库中做重复数据更新,不重复数据写入(分别写单次和批量)
- pg的事务隔离级别
- 进程切换的过程中会发生什么,线程切换过程中会发生什么
- 进程和线程的区别,为什么线程的开销会比进程小
- Python多进程之间如何通信
- 了解其他编程语言吗,回答了Java,问了Java的jvm编译后的文件是什么类型
- 为什么Java会比Python快
- Python为什么要设置GIL而不是允许开发者自己去设置线程锁
- Python解释器的工作原理
- 程序遇到问题是如何debug的
- 使用过哪些Linux命令
- Linux进程崩溃后如何排查(假设该进程没有记录日志文件)
写题
写一个快速排序。开始写了一个将小于分界值和大于分界值的元素分别放在两个列表中递归,完成后面试官说内存消耗太大,改成之间修改原始列表的方式重新写一个。
#深信服#