开一个面试记录帖子
7.24 面试:学深智能
1.问到环境问题:docker 当时好像没有答好
# docker的话 就是编写好dockerfile镜像文件 # 然后生成镜像 执行指令docker build -t dockerfilename . # 查看镜像docker image ls # 运行容器 docker run firstdocker
2.redis和mysql区别 :
我没答出很多 只答出了 mysql是关系型数据库 将数据存储在硬盘里面的 所以可以存储大量数据 但是因为在数据存储在硬盘上,所以读写速度比较慢。 redis是基于key,value的nosql非关系型数据库,是将数据存储到内存上的,所以读取速度很快,但无法存储大量数据。一般生产中Mysql为主Redis为辅组
3.高并发如何处理
当时讲了celery 通过异步方式来解决 不知道对不对
但后面应该更多使用redis来作为消息队列 来解决高并发的问题(不知道是不是这样的 欢迎告知)
4.多线程和多进程的区别
我讲了一下线程的概念 :资源调度的基本单位
进程的概念:资源分配的基本单位
然后线程的话:GIL(Global Interpreter Lock)全局解释锁 这个锁本身是一个互斥锁 就是让解释器变成临界资源,这样在同一个时刻 只有一个线程可以运行python 字节码 其他的线程因为无法拿到这个GIL锁 所以就只能阻塞了 所以这个GIL使得这个Python多线程是一个假的多线程
对于CPU密集型的任务:单个进程下,开启多个线程,无法实现并行,只能实现并发,牺牲执行效率。
由于GIL锁的限制,所以多线程不适合计算密集型任务,更适合IO密集型任务(因为在IO等待的时候GIL的锁会被线程释放,其他线程就会竞争使用这个GIL锁)
4.对显卡有什么了解
查看显卡使用情况 NVITOP 可以查看显卡的显存的使用情况
可以用nvidia -smi -l 可以查看到GPU的使用率,温度,显存等信息