背景:211渣硕,传统万金油专业
9.19 第一碗凉面 微盟 大数据开发
微盟面我的小哥哥超级超级好。
1)mysql锁,事务,sql语句优化 (没答上来)
http://www.runoob.com/mysql/mysql-transaction.html(事务)
https://www.cnblogs.com/parryyang/p/5711537.html(sql优化)
https://www.cnblogs.com/Little-Li/p/8031295.html(sql优化)
https://zhuanlan.zhihu.com/p/23425905(引擎)
https://zhuanlan.zhihu.com/p/29150809(锁)
https://blog.csdn.net/bigtree_3721/article/details/77417518(锁)
2)knn数据中心点到每个点的距离怎么计算(我只回答了两点间距离公式,他不太满意)
3)线程和进程区别(答得不好)
计算机程序不过是磁盘中的二进制数据。它们只有被操作系统调用的时候才开始它们的生命周期。进程是程序的一次执行。每个进程都有自己的地址空间,内存、数据栈以及其他记录其运行轨迹的辅助数据。操作系统管理在其上运行的所有进程,并为这些进程公平的分配时间、进程也可以通过fork、spawn操作完成其他任务。各个进程有自己的内存空间、数据栈,所以只能使用进程间通讯,而不能直接共享信息。
所有线程运行在同一进程中,共享相同的运行环境。
一个进程中的线程之间共享一片数据空间,所以线程之间可以比进程之间更方便的共享数据以及相互通讯。
——《python核心编程》
进程:是资源分配的最小单位,创建和销毁开销较大;
线程:是CPU调度的最小单位,开销小,切换速度快;
操作系统将CPU时间片分配给多个线程,每个线程在指定放到时间片内完成。操作系统不断从一个线程切换到另一个线程执行,宏观上看就好像是多个线程一起执行。
Python中由于全局锁 (GIL) 的存在导致,同一时间只有一个获得GIL的线程在跑,其他线程则处于等待状态,这导致了多线程只是在做分时切换,并不能利用多核。
多线程与多进程的区别:(1)多进程中同一个变量各自有一份拷贝在每个进程中,互不影响;(2)多线程中,所有变量都由所有线程共享,任何一个变量都可被任何一个线程修改。线程之间共享数据的最大危险在于多个线程同时更改一个变量,把内容改乱。
from multiprocessing import Pool #多进程
from multiprocessing.dummpy import Pool #多线程
https://www.zhihu.com/question/25532384/answer/81152571
https://www.cnblogs.com/dreamroute/p/5207813.html
4)Hadoop组件(不会Hadoop我都敢去面试开发,真是跪了)
5)过滤垃圾邮件的一个场景(没想到要问布隆过滤器,我以为要问我怎么分类)
6)手写了二分查找(我用的递归,但是太占内存了,他不太满意)