几点面试时需要注意的技巧:
1. 主动引导面试流程。在讲A知识点的时候,在最后引出与B知识点相关的内容。
例如:在回答python的垃圾回收机制时,回答结束可以引出GIL
2. 当问到自己在开发中没用用过,但是自己掌握的知识点时,要表现出会用。
例如:面试官问:是否 使用过多进程或者多线程时,如果自己没用过,那么直接告诉面试官,多进程使用的是什么模块, 多线程用的什么模块,以及他们的使用场景。
3. 当被问到一个自己熟悉的知识点时,最好可以进行延伸 例如:被问到线程相关的问题时,可以给面试官举例:flask中处理多请求时,就是通过线程来实现 的。
4. 当问到一个知识点的具体用法时,如果记不清,但是自己又了解,那么可以直接告诉面试官原理。
例如:当被询问redis,如何设置一个值有效期时,如果不记得,那么可以告诉面试官,在redis中, 通过两种方式结合来实现有效期管理:1.定时对有过期时间的数据进行扫码,2.在取数据时,对数 据的有效期进行判断。
5. 可以提前准备好常见问题的文字版草稿并记忆。
HR面相关: 在一般的公司或者较小的公司中,面试技术岗时,HR只会对面试者情况进行简单的判断,主要还是看技 术负责人的态度,在面试大公司时,HR面也是比较重要的一个环节。会有几个问题比较注重:
1.经历是否真实
2. 上份工作的离职原理
3. 是否有已经感觉不错的offer,如果有那么会让你说说感觉最好的一份offer和该公司的区别。以及自 己对未来工作的期望(目的:判断当前的公司是否满足面试者对工作的一个期望,以及是否认可当 前的公司),
4. 薪资当被问及,是否可以降低时,可以先了解下公司的福利,如果不错,那么可以告诉HR自己可 以接受的范围,或者告诉HR自己认可技术面试官的能力,可以接受降低,具体的薪资可以让技术 面试官来根据自己的能力决定。
5. 上述几个问题,可能会有HR多遍询问,以判断是否回答一致。需略微注意
被问到的一些问题:
1.python基础 闭包相关:手写闭包,使用闭包实现单例,闭包的使用场景 对生成器与迭代器的认识 高阶函数:sorted 元类:元类实现单例 python程序的运行流程: python编译器启动->读入文件->语法词法分析—>生成字节码并优 化—>执行(非逐行读取)
2. 网络编程 TCP/IP协议的5层模型,TCP与UDP的区别,为什么TCP可靠(校验码、消息重传等),TCP 传输时的限流,路由在TCP传输中的作用、Nginx工作在那一层scoket的使用(偏运维的岗位爱问),场景:使用socket可以更加灵活的使用不同的协议传输 数据(pysql其实就是使用sockets实现了mysql的协议) 浏览器发起一个请求到响应的流程
3. 并发编程 介绍进程、线程、协程,使用方式,使用场景,锁 GC IO模型(socket在不同IO模型中的表现)
4. 数据库相关 MySQL: SQL语句的执行流程 长链接与短链接、 索引的优化、索引的类型 事务的隔离及默认的隔离级别 左联、右联的区别及查出来的数据的形式 Redis: 数据类型,及工作中常用的数据类型及基础的命令 雪崩、击穿、穿透及解决方案 如何用python实现类似与redis集群的效果(redis集群及redis的原理,用hash及hash桶+ LRU缓存策略 来实现redis,用hash来实现集群效果将不同的数据落到不同的redis) 当流量过高时redis被压崩如何处理:kafka削峰 redis的订阅发布者是否有消息确认机制 es: 倒排索引 如何用python实现一个类似ES的功能
5. Django 生命周期 session中间件的表,中间的自定义方法 ORM的常用方法,queryset的了解 路由的分发 JWT的组成
6. celery celery的使用场景
7. linux vim的常用操作 kill命令的参数及信号(大概了解就行) docker的使用场景
8. 项目 在项目中的职责(适当的加一点自己做了一些模块的开发方案会好一点) 以前公司的工作流程 对技术难点或者发现需求有问题等情况的处理方案问到的算法题目: n阶台阶的上法,及递归转为非递归的思路 生成一个长度为n的数组,其元素之和为0且不允许有重复的元素 其他(根据简历和博客被问到的): 画出auth2.0的请求流程 数据传输中常见的安全算法