App Annie:
北京三里屯,小外企
1.GIL(全局解释锁)
是为了解决多线程之间的数据完整性以及状态同步,在解释器层面加锁。通过解释器的分时复用,来实现执行多线程程序,只有拿到锁的线程结束,才能执行下一个线程。
扩展:
互斥锁和GIL锁的关系
互斥锁:多线程时,保证修改共享数据时有序修改,不会产生数据修改混乱。
GIL锁:保证同一时刻只有一个线程能够使用CPU
解决GIL的办法:
1.使用别的解释器 Jpython
2. 用多进程代替多线程。使用multiprocessing代替Threading模块
什么时候释放GIL:
1.遇到像I/O这种操作的时候,会有空闲时间造成CPU空闲情况
2.会有一个专门的tick计数器,一旦tick数值到达100释放GIL锁,线程之间再次竞争GIL锁
2.Scrapy框架中怎么实现多线程的
基于异步框架Twisted,其实我也不会,胡诌就完事了,面试官好像很无语,我记得框架原理中,有一个调度器,将引擎发送过来的request请求传送到调度器中,调度器是用队列的方式实现的,所以自己给自己挖坑。
3.给你一个正整数,怎么判断奇数偶数?
首先想到当然是取余咯,面试官说性能不好,
我但是蠢了没想到使用二进制判断最后一位。。。。
4.HTTP协议(200、304、403、404)
HTTP协议是超文本传输协议的缩写,HTTP协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器之间的通信。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。(当今多数服务器支持Keep-Alive功能,使用服务器支持长连接,解决无连接的问题)
无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即客户端发送HTTP请求后,服务器根据请求,会给我们发送数据,发送完后,不会记录信息。(使用 cookie 机制可以保持 session,解决无状态的问题)
5.Cookie和Session的区别
Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie 的首部字段信息,通知客户端保存Cookie。 当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求, 然后对比服务器上的记录, 最后得到之前的状态信息。
Session主要是讲先前用户信息记录在服务器端,并且生成唯一的Session-ID号,客户端仅仅需要在每次访问的时候,提供对应的ID号码,即可从服务器获取先前存储的对应信息。
6. 给我一下录用你的理由 5min
从个人的学习能力以及自己的发展方向与公司类似讲起。