面试复盘-搜狗:往前迈的这一步
面试过程并不长,主要分为三部分,以下罗列出我在整个面试及准备过程中涉及到的知识点。
(标√的是我觉得了解程度还可以,回答效果较好的)
python基础:
装饰器
装饰器的概念和实现√
引申至嵌套函数和闭包√
(闭包那稍有卡壳,不过联想到可在装饰器里内置一些变量,也就说通了,之前看过耿哥的多巴胺框架的博文起了不小的帮助
协程
- 协程的特点√
- 引申至python的多线程和多进程√
- 多线程、多进程、协程之间的异同和联系√
- 由python多线程引申至全局解释锁
深浅拷贝√
(这部分比较深的一点其实是,如果子对象是不可变/非容器类型:元组和字符串等且内部只存储原子类型,那么即便是深拷贝也只能得到该子对象的浅拷贝,不过没有问到:
集合:set
字典:dict:
布尔值
其他:
根据python标准库,内置类型还包括:模块、函数、方法、二进制序列(bytes、bytearray、memoryview)等
计算机基础:
数据库
B+树和B树的区别√
索引建立的选择√
索引优化√
事务的特点(ACID)√
Mysql数据库引擎(这个就答出了我知道的innodb、myisam)
引申至两者的区别√
两个sql查询,比较简单,略去
操作系统
进程和线程的区别√
进程间通信方式(这部分优缺点理解得不够到位):
线程间可以通过直接读写同一进程中的数据进行通信,但时进程通信需要借助IPC:
- 管道
- 命名管道:一种半双工通信方式,允许无亲缘关系进程间通信
- 优点:可以实现任意关系进程间通信
- 缺点:长期存在于系统中,使用不当容易出错
- 匿名管道:半双工,亲缘间通信(父子进程)
- 优点:简单方便
- 缺点:单向通信、使用范围有限(亲缘间)、缓冲区有限
- 命名管道:一种半双工通信方式,允许无亲缘关系进程间通信
- 消息队列
- 信号量:一个计数器,用来控制多个线程对共享资源的访问
- 优点:可以同步进程
- 缺点:信号量有限
- 共享内存
- 网络Socket
- 管道
计算机网络
- HTTP方法√
- RESTful理念√
- 三挥四握√
- TCP与UDP区别√
数据结构
- 红黑树定义和性质√
- 红黑树和B+树比较(选取B+树做数据库索引结构的原因)√
算法:
圆回原点:动态规划√
翻转二叉树:递归实现√
爬楼梯√
sql:
第二高薪水√
第二天收到了邮件,虽然决定下的有点晚,好歹首战告捷。
总体来看,这次面试的表现还算理想,六个月之前的那一次受挫让我重新认识了自己,尽管之前花了不少时间在准备考研上,也不能说毫无收获:学习习惯的养成是十分重要的。
总归是结结实实地往前迈了一步,虽然只是现在的一小步,但对于未来的一大步,这就是第一步。