1、海量日志数据,提取出某日访问百度次数最多的那个IP。
算法 - 2 动态规划
https://hit-alibaba.github.io/interview/basic/algo/DP.html
动态规划
适用于动态规划的问题,需要满足最优子结构和无后效性,动态规划的求解过程,在于找到状态转移方程,进行自底向上的求解。
爬楼梯问题 LeetCode 70
经典的动态规划问题之一,容易找到其状态转移方程为 dp[i] = dp[i-1] + dp[i-2]
,从基础的 1 和 2 个台阶两个状态开始,自底向上求解:
容易看出其实结果就是 fibonacci 数列的第 n 项。
连续子数组的最大和 LeetCode 53
用 dp[n
] 表示元素 n 作为末尾的连续序列的最大和,容易想到状态转移方程为dp[n] = max(dp[n-1] + num[n], num[n])
,从第 1 个元素开始,自顶向上求解:
House Robber LeetCode 198
对于一个房子,有抢和不抢两种选择,容易得到状态转移方程 dp[i+1] = max(dp[i-1] + nums[i], dp[i])
,示例代码如下:
最长回文子串 LeetCode 5
用 dp[i][j]
表示子串 i 到 j 是否是回文,使用动态规划求解:
1 | string longestPalindrome(string s) { |
最小编辑距离 LeetCode 72
2.进程线程(还有有关操作系统的 我忘了
3.数据库查询 然后连接查询
8.链表讲一下 什么单向链表双向链表循环链表 链表适合快排吗为什么
四次挥手 time_wait
客户端当被告知服务端接收窗口大小为0后的行为,如果服务端的接收窗口又变大了呢?
- 拥塞控制
https://www.cnblogs.com/logsharing/p/8448446.html
- get参数通过url传递,post参数放在request body中
- get参数是有长度限制的,而post没有
- get参数直接暴露在url中,较为不安全,不能传递敏感信息
- get请求只能进行url编码,而post支持多种编码方式
- get请求浏览器会主动cache
- get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留
- get和post本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
- get产生一个TCP数据包,post产生两个TCP数据包
总结:
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。(据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。)
- 对于get和post的区别,get传递数据如同是写在脸上,post传递数据如同放在肚子里,脸上不能放太多东西,也不能放隐私东西,肚子里就无所谓啦~(一个面试官给我说的巧记妙招~)
浏览器输入 www.qq.com 发生了什么; 第二次访问与第一次有什么区别吗,长连接和短连接,四次挥手,客户端先发和服务端先发FIN有什么区别,一般是哪端先发,原因,哪端先发好?time_wait持续时间?2MSL? 没有time_wait有什么问题
http 与 https 区别,ssl 的过程
算法 - 0 排序实现
快速排序
时间复杂度:O(nlogn),最差情况为O(n^2)
空间复杂度:O(1),没有使用额外空间
稳定性:不稳定
1 | # -*- coding:utf-8 -*- |
归并排序
时间复杂度:O(nlogn),最好最优平均
空间复杂度:O(n),每次归并的时候需要开辟临时空间 2倍数组长度的空间
稳定排序
1 | # -*- coding:utf-8 -*- |