阿里电话面试
Java StringBuffer和StringBuilder的区别的问题。
String,StringBuffer与StringBuilder的区别??
StringBuilder and StringBuffer
简单来说:StringBuilder的效率更高;StringBuffer是线程安全的,而StringBuilder不是线程安全的。
快排性能
- 平均时间:O(nlogn)
- 最差情况:O(n ^ 2)
- 稳定度:不稳定
- 额外空间:O(logn)或者O(n)
解释为什么最坏情况是O(n ^ 2):考虑类似5 4 3 2 1
的输入,那么每个数都会被选为基准,因此每个数都会和其他数进行比较,所以比较的次数就是n ^ 2。
查看Linux负载情况
top命令
Thread vs Runnable
Thread是类,Runnable是接口。在实际使用中,更多地使用Runnable,因为接口的性质,值得实现接口可以给类提供更多的灵活性。
TCP vs UDP
- TCP:传输控制协议,面向链接,可靠,提供了超时重发、丢弃重复数据、检验数据、流量控制等,保证数据从一端传到另一端。
- UDP:用户数据报协议,面向数据包,不可靠,只管发送,不保证送达,也没有超时重传机制,故而速度很快。
创建索引
create index index_name on table_name
当你访问淘宝的时候,发生了什么?
这个问题以前在阿里的笔面试中出现过,太细节的地方背起来当然没什么意义,这里我就整理每一步大概做了哪些事情以及涉及到阿里相关的那些技术。
1. 浏览器查询DNS服务器
在浏览器中键入的只是网址,那么浏览器要知道具体的服务器就要查询DNS服务器,将www.taobao.com
转换成相应的IP地址。阿里旗下网站的每日访问量巨大,不可能将所有访问都解析到一个IP地址上,那么这一步就涉及到阿里的负载均衡系统。
2. 产生PV,同时如果是独立用户那么将产生UV
PV指的是Page View,页面被刷新一次就记一次数。
UV指的是User View,一个用户访问一次就记一次数,无论这个用户访问了多少个页面或者刷新了多少遍,都只记一次UV。
3. 从CDN中获取素材
阿里旗下的网站——尤其是淘宝和天猫——富文本素材众多,那么如果都从服务器上读取的话,一来速度慢,二来对服务器的压力也大。所以这一步就涉及到阿里的CDN与分布式文件系统。阿里在全国建立了上百个CDN节点,CDN指的是内容分发网络。
4. 搜索
这是很多上淘宝天猫要做的第一件事情,那么阿里的后台系统将搜索行为分为以下四个类型:
- 浏览型
- 查询型
- 对比型
- 确定型
针对不同的搜索类型,会出现不同的结果。这里涉及到阿里的搜索引擎和日志系统。搜索引擎中包含了自然语言处理和中文分词以及其他技术。日志系统是记载了用户做出的各类行为,比如查询、交易、取消交易等等,这些都会被保存下来。
5. 交易快照
只要是进行过的交易都会记录下来,无论商品的信息是否发生了改变。那么保存这些信息是需要非常巨大的存储代价的,那么这一步就涉及到阿里的分布式存储系统,同时注意这些数据保存之前都是会进行压缩的。
6. 数据传输
无论是日志还是交易信息,乘以阿里每日的交易量都是一个很大的数据,所以阿里还开发了自己的数据传输系统。
7. 云梯
最后,你在阿里旗下的所有网站的所有行为,都会被大规模数据挖掘系统云梯进行分析,以求最大程度地还原和定位你这个人。
网友评论