1、写单例模式( C++ java Python)

class Singleton

{

public:

static Singleton &Instance(){                            //1

if( !m_pInstatnce){ //2

Lock(m_mutex) //3

If( !m_pInstance ) //4

m_pInstance = new Singleton;//5

UnLock(m_mutex); //6

}

return *m_pInstance; //7

}

private:

static volatitle Singleton *m_pInstatnce;            //8

private:

Singleton();                                                         //9

Singleton(const Singleton&);                             //10

Singleton& operator=(const Singleton&);            //11

~Singleton();                                                       //12

}

Singleton *Singleton:m_pInstatnce = NULL; //13


2、Hbase 和其他 NoSQL相比 有什么优势

1、 可拓展性 :可以以最小的代价、无须停机的方式增加存储系统的容量。一些情况下我们需要快速增加系统的容量,并且能够自动负载、利用到这些新的硬件设备。

2、 高写入吞吐量 :大多数应用都需要存储巨大量的数据,这就要求很高的写入吞吐量。

3、 单个data center内高性能、低延迟的强一致性 :一些重要的应用、比如消息、要求很强的单个数据中心内的一致性,这些需求很直观来自于用户需求,比如展示在主页的“未读消息”的数目和inbox页面显示的消息就应当是高度一致的。尽管全局强一致性的分布式系统几乎是不可能的,但是一个系统至少能够提供在单个数据中心内的强一致性,这能够带来很好的用户体验。

4、 高效的随机读取性能 :尽管应用层的缓存技术(不管是嵌入式的还是memcached方式)被广泛应用,但是很多访问仍然没办法命中缓存,需要后端的存储系统来处理,Hbase随机读取性能很稳定。MySQL在随机读取方面非常优秀,但如果Hbase结合分布式缓存MemeCached或者MemBase,那么其读取性能就可以和MySQL比肩了。

5、 高可用性以及灾难恢复 :我们需要提供给用户高度可用的服务,不管是遇到计划中的事件(比如软件升级、或者硬件/容量的增加),还是遇到一些计划之外的事件(比如硬件失效)。我们也需要能够容许数据中心的一些数据丢失,能够在合理的时间范围内切换到其他数据中心来为用户提供服务。

6、 故障隔离 :我们在大量的MySQL数据库上的应用经验表明,故障隔离是非常关键的。单个数据库可以down掉,但是仅只有很小一部分用户会被这样的事件影响。类似地,在我们的Hadoop存储中,单个磁盘故障仅只会影响到一小部分数据,而且系统可以很快恢复。

7、 原子的“读-修改-写”原语 :原子的计数器和检查并设置(checkand set、或者称compare and swap)等API在构建无锁的并发应用时非常有用,可以帮助用户有效地解决多线程竞争造成的很多问题。

8、 范围扫描 :一些应用要求特定范围内的行的集合的高效检索。例如,给定用户的最近100条消息的检索。

1、 可拓展性

虽然所有NoSQL数据库都承诺可拓展性,但是面对挑战是水平却不尽相同。

BigTable的相似产品Hbase和Hypertable暂时处于领先地位,内存存储(Membase或Redis)和文档数据库(MongDB或CouchBase)紧随其后,他们之间的差异随着数据量的增大而被无限放大,特别是到了PB级以后。

拓展性方面Hbase具备天生的优势,支持自动负载均衡,故障转移,压缩和单服务器多分片,而且Hbase和HDFS配合的非常好,HDFS能够通过复制和自动平衡轻松容纳跨越多个服务器的大文件。

所以所如果需要极端拓展性的话,列族NoSQL是最好的选择。

但是话又说回来,如果你的大量数据会以惊人的快节奏出现,例如一些实时的交易数据或者广告点击追踪数据,那么单靠列式存储无法提供完美的解决方案。这个时候你需要一些更加轻快、既支持快速读写、又支持实时处理的存储,没有什么比在内存里面处理数据更快了,所以你可以在Hbase前面搭配上MongDB/Redis来进行实时数据处理以及实时的数据挖掘等。其他一些实时性不是非常高的批量查询和数据挖掘可以利用Mapreduce在Hbase上进行。

2、 事务完整性和一致性

Hbase和Hypertable提供行级的原子更新以及一致性状态,MongDB提供文档级别的原子更新,Cassandra只能提供最终一致性。

但是事务的要求并不是必须的,许多数据,比如网络流量日志,社交网络状态更新(微博等),广告点击,道路交通数据,交易数据和游戏分数等是一次写、多次读,这样的数据对事务的需求有限,甚至没有。

有些数据虽然已更新和删除,但是修改通常只限于单记录而非数据集的某个范围,有时更新非常频繁且涉及范围操作。如果范围操作很常见并且需要保持更新的一致性,那么RDBMS才是最佳选择,如果单个条目的原子性已经足够,那么列式数据库、文档数据库和部分键/值存储都可以。如果需要事务完整性但是可以容纳暂时的窗口不一致,那么最终一致性存储也是不错的选择。

3、 数据模型

MongDB支持类SQL查询、基本的关系型引用和数据库对象,如果使用NoSQL的主要原因是可以使用宽松的数据结构,那么MongDB肯定是开始使用NOSQL的最佳选择。

很多Web为中心的业务都开始使用MongDB,主要是因为它支持灵活的数据模型(弱Schema),同时能够提供快速的读写能力。(现在敏捷开发很重要、MongoDB能更快地开发应用程序。一个明显的原因是MongoDB没有固定的Schema,所有花在提交、沟通和实施Schema变更的时间都省下来了)

此外MongDB对Web框架的支持非常好,比如Spring、Rails等。

最后要说明的是,MongDb非常容易上手,学习周期很短。

4、 查询支持

挑选NoSQL主要考虑的因素除了存储,还有查询。

MongDB和Redis的查询能力比较强。

像MongDB的查询,与SQL相似,语法简单,容易学习。MongoDB支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的SQL查询。

像Redis的查询,查询方法很全,命令文档也很丰富。

Hbase只支持基于Rowkey的单条记录查找、基于Rowkey的范围查找以及全表扫描。

要注意的是几乎所有NoSQL存储都不支持表之间的join操作。

提到查询不得不提到索引,MongDB本身支持二级索引,Hbase不支持二级索引,但是现在也有很多方法(最常见是借助协处理器)可以帮助Hbase实时建立二级索引。

5、 性能

(1)    50/50读和更新、即读少写多。

Cassandra最优秀,每秒执行超过1W次操作,平均读延迟只有25ms、更新性能更好只有10ms。

Hbase紧随其后。至于MySQL,每秒执行4000左右操作的时候才和上面两个有可比性,超过5000之后延迟迅速攀升。

(2)    95/5读和更新、即读多写少。

还是Cassandra最优秀。

列式存储连续范围的读取性能非常优秀,这证明和Hbase批量读写的性能非常好。

Hbase表现非常稳定,与每秒操作数无关,5%的更新在Hbase里面几乎没有延迟。

只读情况下MySQL性能最好,可能与缓存有关。

如果结合分布式缓存MemeCached或者MemBase,那么Hbase的读取性能就可以和MySQL比肩了。


3、心跳机制
网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。但是如果此 套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓“心跳”就是定时发送一个自定义的结构体( 心跳包或心跳帧),让对方知道自己“在线”。 以确保链接的有效性。
所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。发包方:可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持 长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。

4、链表,每个节点有指向下一个节点的指针,还有一个额外的指针(指向其他节点、该节点、NULL),如何深拷贝(不能建立额外的数据结构)?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝链表是B1 -> B2 ->...-> Bn。
为了能够快速的找到pRand指向的节点,并把对应的关系拷贝到B中。我们可以将两个链表合并成
A1 -> B1 -> A2 -> B2 -> ... -> An -> Bn。
从A1节点出发,很容易找到A1的pRand指向的节点Ax,然后也就找到了Bx,将B1的pRand指向Bx也就完成了B1节点pRand的拷贝。依次类推。

当所有节点的pRand都拷贝完成后,再将合并链表分成两个链表就可以了。


5、int数组,有一个数值个数超过数组大小的一半,求这个数?(时间:O(n) 、空间: O(1))

算法电面:
一个二叉树(包含父节点指针,根节点的父节点指针指向NULL),各个节点编号为不同的正整数,每次从二叉树中截取一个叶子节点,再随机从1~100中去一个数K,复制K个该叶子节点,放入数据池中。数据池有一个get()函数,可以获取到一个节点并从数据池中删除该节点,假设get()复杂度为O(1)。最后,删除该二叉树。
问,给你这个数据池,如何重新构造出相同的二叉树,并且以对映的K为作为节点权值,寻找出根节点到叶子节点累积权值最大的路径。
要求:时间复杂度O(n),空间复杂度O(n),可以用hash_map

转载于:https://www.cnblogs.com/xiaoyesoso/p/5408642.html

亿方云面试经验(后台开发工程师实习)相关推荐

  1. 云Hbase数据库在亿方云实践之路.pdf

    第二篇:HBase在大搜车金融业务中的应用实践.pdf 关于缓存Redis Codis 集群演化与 Redis 异步迁移.pdf 关于消息服务的 查看全文 http://www.taodudu.cc/ ...

  2. 美团点评2018校园春季招聘后台开发工程师笔试经验

    笔试公司:美团点评 笔试岗位:后台开发工程师 笔试时间:2018年3月22日19:00-21:20 笔试形式:赛码网在线做题 笔试回忆: 先做的是第一部分逻辑推理题,比如给你列出几个数字,让你推出下一 ...

  3. 总结如何从Linux开发工程师到Linux后台开发工程师再到Linux高级互联网架构师

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  4. 不止是企业网盘,亿方云聚焦数据战略的背后

    今年网盘领域关闭风波闹得沸沸扬扬,最新的消息是360云盘也即将关闭,至此,今年国内排名前十的网盘已有7家宣布关闭.在备受关注的企业网盘市场,亿方云是一个特别的存在,说其特别是因为创始人程远,这位前美国 ...

  5. 亿方云CEO程远:转型第一式:链接企业人与数据

    传统企业一直在探讨如何做好互联网转型,那么互联网核心是什么?转型目标是什么?亿方云CEO程远在此次峰会上发表了自己看法,他认为快.人.连接是互联网核心基因,转型第一步就在于企业.人与数据的充分链接.中 ...

  6. 后台开发工程师需要达到的一个高度以及秋招之路

    原址 https://blog.csdn.net/u012104219/article/details/83188536 秋招研磨 经过了大半年的学习和努力.2018 年 10 月 17 日,我的秋招 ...

  7. [经验]2020届后台开发方向实习,秋招经验总结

    文章目录 [经验]2020届后台开发方向实习,秋招经验总结 实习 秋招 准备 1.算法题 2.简历 3.基础知识 4.招聘信息 5.智力题 6.心态 7.面经 [经验]2020届后台开发方向实习,秋招 ...

  8. 亿方云去广告v1.0官方正式版

    2019独角兽企业重金招聘Python工程师标准>>> 亿方云同步端是一款免费云办公软件.可以将用户的文件夹进行本地和云端的持续同步. 软件特色: -存储与管理 文件不限大小格式,可 ...

  9. 亿方云全国营销中心落户上海,各届大咖挤爆现场!

    2017年6月8日,"云顶共生-亿方云全国营销中心成立庆典"活动,在上海悦达889广场16楼盛大举办.庆典活动现场场面火爆,政府代表.投资方代表.媒体伙伴,以及亿方云标杆客户.合作 ...

最新文章

  1. CTFshow php特性 web94
  2. poj 1716 差分约束
  3. vue图片点击超链接_vue使用v-for实现hover点击效果
  4. [scikit-learn 机器学习] 3. K-近邻算法分类和回归
  5. Java开发中快速提升编码能力的方法有哪些?
  6. pytorch中gather函数的理解
  7. matlab 去掉矩阵中某些元素,怎么修改矩阵中的某些元素 或者简单点说保留矩阵中的元素...
  8. Git教程——查看修改日志 (log diff)
  9. WebStorm常用插件推荐
  10. 【杂项】笔记本电脑外接显示器实现扩屏
  11. 微信服务号认证小程序
  12. 服务器pe安装win7系统安装教程,win7pe装系统步骤详解
  13. iOS开发:Protocol协议以及委托代理传值
  14. excel shell合成_1分钟拆解:「如何将10多个工作表sheet,合并成一张?」
  15. SEO老鸟与SEO菜鸟的区别
  16. APP推广的十大法宝,快速提升APP的转化率
  17. Unexpected error while obtaining UI hierarchy:使用uiautomatorviewer定位元素报错
  18. jupyter notebook import tensorflow as tf 报错解决
  19. c语言微信昵称大全女生优雅经典的,微信昵称大全女生优雅好听的
  20. 数学思想方法猜想与反驳(1)归纳猜想

热门文章

  1. 和平精英体验服务器维护中,刺激战场:体验服测试结束,和平精英上线,以后要说维护和平了。...
  2. 浅谈5G对前端生态、发展带来的变化
  3. git 冲突了怎么办
  4. 高手过招,洛谷之提高历练地,博弈论(3-6)
  5. java数组中获取长度通过调用_数组的长度如何获取?
  6. 创建 scrapy 爬虫
  7. 只有一种“足球”的证明
  8. python getattr和getattribute_Python的__getattr__和__getattribute__
  9. 关于恩智浦MCS9SXEP100芯片时钟配置的问题
  10. CSS的元素的隐藏与显示