阿里内推2016面试(终总结)详解.doc

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
孙彦晨 阿里一面 项目,问了一个项目,是学术项目 1.多态 2.虚指针 3.知道STL吗 list用过吗 它是怎么实现的 list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上vector头文件:#includelist; hash_map用过吗 它是怎么实现的 容器都有哪些 数组与链表的区别? 3.知道设计模式吗?用过单例模式吗? 叙述一下单例模式的过程 在单例模式下,用多线程会出现问题吗? 4.Java中没有delete,C++中最讨厌delete,怎么解决? 引出智能指针 加锁 5.数据库 多线程访问数据库 读到脏的数据 怎么办 用到乐观锁与悲观锁的知识点 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。 两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。 6.叙述一下TCP三次握手中客户端与服务器之间状态的变化 7.大数据排序 文件中9亿条不重复的9整数 排序 问题:假设一个文件中有9亿条不重复的9位整数,现在要求对这个文件进行排序。 一般解题思路: 1、将数据导入到内存中 2、将数据进行排序 (比如插入排序、快速排序) 3、将排序好的数据存入文件 难题: 一个整数为4个字节 即使使用数组也需要900,000,000 * 4byte = 3.4G内存 对于32位系统,访问2G以上的内存非常困难,而且一般设备也没有这么多的物理内存 将数据完全导入到内存中的做法不现实 其他解决办法: 1、导入数据库运算 2、分段排序运算 3、使用bit位运算 解决方案一:数据库排序 将文本文件导入到数据库,让数据库进行索引排序操作后提取数据到文件 优点:操作简单 缺点:运算速度慢,而且需要数据库设备。 解决方案二:分段排序 操作方式: 规定一个内存大小,比如200M,200M可以记录(200*1024*1024/4) =记录,我们可以每次提取5000万条记录到文件进行排序,要装满9位整数需要20次,所以一共要进行20次排序,需要对文件进行20次读操作 缺点: 编码复杂,速度也慢(至少20次有哪些信誉好的足球投注网站) 关键步骤: 先将整个9位整数进行分段,亿条数据进行分成20段,每段5000万条 在文件中依次有哪些信誉好的足球投注网站0~5000万1亿…… 将排序的结果存入文件 解决方案三:bit位操作 思考下面的问题: 一个最大的9位整数为999999999 这9亿条数据是不重复的 可不可以把这些数据组成一个队列或数组,让它有0~999999999(10亿个)元素 数组下标表示数值,节点中用0表示这个数没有,1表示有这个数 判断0或1只用一个bit存储就够了 声明一个可以包含9位整数的bit数组(10亿),一共需要10亿/8=120M内存 把内存中的数据全部初始化为0, 读取文件中的数据,并将数据放入内存。比如读到一个数据为341245909这个数据,那就先在内存中找到341245909这个bit,并将bit值置为1遍历整个bit数组,将bit为1的数组下标存入文件 8.你有什么问题问我的吗? 内推孙婉君 阿里一面 1.TCP与UDP区别 1.基于连接与无连接; 2.对系统资源的要求(TCP较多,UDP少); 3.UDP程序结构较简单; 4.流模式与数据报模式 ; 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。 2.冒泡排序、快速排序 3.双向链表中插入一个节点 4.面向对象编程特点 封装 继承 多态 5.继承、多态、多继承优缺点 多重继承的优点就是一个类可以实现多个接口(对象可以调用多个基

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档