面试中的一些常见的问题
这里挖坑
python
python 的 GIL
GIL(Global Interpreter Lock),全局解释器锁.
python的解释器,py文件的运行需要解释器。在cpython中,这个解释器不是线程安全的,他有一个全局锁,用于保证对象的线程安全。当多线程情况下运行时候。每次其实只有一个线程在运行,其他的线程都是在等待。这就导致python中的多线程并不能完全利用全部的cpu资源(如果是多核处理器的话).所以GIL的存在,使得python处理cpu密集型的任务时候效率低下,因为要不断切换浪费时间切换线程,而且无法利用所有的cpu资源。而在I/O密集型的任务有比较好的效率,因为处理耗时的I/O任务时,线程会释放GIL给其他线程.
关于解释器和编译器的区别: - 代码 -运行-> 解释器 --> cpu - 代码 -->编译器 -运行-> cpu
# coding=utf8 |
上面python3.6为什么将近慢了一倍? > python3 的 int 都默认为 long integer.所以会稍微慢一些. > 这里有一个python3 和python2 的表现的对比。部分对比中python3比python2快8%到48%。部分慢25%到54%[Speed] Benchmarks: Comparison between Python 2.7 and Python 3.6 performance
python的多线程,多进程, 协程
几种排序
快速排序 def sort_fast(alist):
pass
数据库
mysql 的索引
mysql 的 when case
先创建测试数据 create table testScore
(
tname varchar(30) null,
ttype varchar(10) null,
tscor int null
);
insert into testScore values ('张三','语文',80);
insert into testScore values ('张三','数学',98);
insert into testScore values ('张三','英语',65);
insert into testScore values ('李四','语文',70);
insert into testScore values ('李四','数学',80);
insert into testScore values ('李四','英语',90);
查询每个人的分数 select
`tname`,
max(case `ttype` when '语文' then `tscor` else 0 end) '语文',
max(case `ttype` when '数学' then `tscor` else 0 end) '数学',
max(case `ttype` when '英语' then `tscor` else 0 end) '英语'
from testScore group by `tname`;
group 中的case when select
`tname`,
case `ttype`
when '数学' then '理科'
else '文科'
end as '科别',
sum(`tscor`) as '总分'
from `testScore`
Group by
`tname`,
case `ttype`
when '数学' then '理科'
else '文科'
end;
orm 的 n + 1问题
缓存、队列
redis 的 持久化策略
- RDB 在指定的时间间隔内生成数据集的时间点快照
- AOF 持久化记录数据库的所有操作命令,并在服务器重启时重新执行
缓存击穿、雪崩、穿透
- 缓存雪崩:指大量缓存同时失效,使得查询直接落到数据库上,造成数据库短时间内承受大量请求而崩掉。
- 缓存击穿:指某个热点key,短时间大量请求都在访问,当他过期时,所有的请求会突然都直接落到数据库上,造成数据库短时间内承受大量请求而崩掉。
- 缓存穿透:当用户访问的数据,既不在缓存中,也不在数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。那么当有大量这样的请求到来时,数据库的压力骤增。
其他基础
tcp/ip协议,tcp的三次握手等
tcp/ip 是一个协议簇的统称,
tcp(transport control protocol)传输控制协议 udp(user datagram protocol)
http协议
Hyper Text Transfer Protocol(超文本传输协议) Hypertext Transfer Protocol -- HTTP/1.1
包括方法: GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE,CONNECT
url, uri 的区别
url(uniform resource locator) uri(uniform resource identifier) 从名字可以看出来uri是资源的唯一标识,而url是资源的定位 url是uri的一种