linux命令
ps -ef | grep java | awk ‘{print $1}’
替换sed ‘s/a/b/g’ file.txt
计算第二列的和
cat file | awk ‘{ sum += $2} END {print sum}’
包含error的行数:
cat file | grep error | wc -l
统计前10单词:
cat file | sort | uniq -c | sort -k 1nr | head -10
内存前5
ps -aux | sort -k4nr | head -5
数据库
是否使用了索引:explain的key值
死锁:
事物A,B循环请求
分页:
select * from student limit(curPage-1)*pageSize,pageSize;
事务:
https://www.runoob.com/mysql/mysql-transaction.html
BEGIN;
INSERT INTO classes(id,title) VALUES(8,‘ENGLISH’);
UPDATE classes SET title=‘11’ WHERE id=3;
COMMIT;
乐观锁:先改,提交的时候再检查版本。乐观锁并未真正加锁,效率高。一旦锁的粒度掌握不好,更新失败的概率就会比较高,容易发生业务失败。
悲观锁:先锁再修改,依赖数据库锁,效率低。更新失败的概率比较低。
sql优化:
- 不要查询多余的数据:指定列
- 命中索引:组合索引的左,like ‘ab%’,
- 缓存redis
- 中间表
https://blog.csdn.net/weixin_44504146/article/details/92737613?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
网络
线程 进程区别
进程间通信方式:
管道、消息队列、套接字
tcp udp区别:
tcp面向连接,udp无连接
tcp数据完整,udp不可靠
tcp一对一,udp可以多对多
tcp资源要求多,udp更快
http和https区别:
https基于secure socket layer的http
身份认证:CA证书
完整性:内容校验
私密性:加密传输
在浏览器中输入一个网址后的全过程:
解析域名的IP地址(在浏览器缓存或hosts或DNS服务器查找)
发起连接请求,TCP三次握手
发送HTTP请求信息
接受服务器返回的数据并渲染到页面
断开TCP连接,四次挥手
https://blog.csdn.net/weixin_30376083/article/details/95320106
常见的状态码:
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效响应
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取响应
测试
测试朋友圈
app和web测试区别:
https://blog.csdn.net/Bee_AI/article/details/86484692?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158571339919195239817670%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158571339919195239817670&biz_id=0&utm_source=distribute.pc_search_result.none-task
接口测试
第三方接口没有准备好? mock方法
get post区别
restful api:
看Url就知道要什么
看http method就知道干什么
看http status code就知道结果如何
https://blog.csdn.net/qq_27026603/article/details/82012277?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
性能测试
最大压力值
python
深拷贝浅拷贝区别
算法:
反转链表
堆排序
大文件问题:(hash分解成小文件,归并)
有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M,要求返回频数最高的100个词。
Step1:顺序读文件中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(记为f0,f1,…,f4999)中,这样每个文件大概是200k左右,如果其中的有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M;
Step2:对每个小文件,统计每个文件中出现的词以及相应的频率(可以采用trie树/hash_map等),并取出出现频率最大的100个词(可以用含100个结点的最小堆),并把100词及相应的频率存入文件,这样又得到了5000个文件;
Step3:把这5000个文件进行归并(类似与归并排序);
https://zhuanlan.zhihu.com/p/24383239
app闪退原因:
- 空指针
- 数组跨界
- 内存溢出
- 内存泄露
线性表、链表区别
存储:连续,不连续
时间:查找、插入删除
空间:预分配,不需