2019年总结,阿里,腾讯,百度,美团,头条等技术面试题及部分答案_第1页
2019年总结,阿里,腾讯,百度,美团,头条等技术面试题及部分答案_第2页
2019年总结,阿里,腾讯,百度,美团,头条等技术面试题及部分答案_第3页
2019年总结,阿里,腾讯,百度,美团,头条等技术面试题及部分答案_第4页
2019年总结,阿里,腾讯,百度,美团,头条等技术面试题及部分答案_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019年总结,阿里,腾讯,百度,美团,头条等技术面试题*[阿里篇](#1)*[华为篇](#2)*[百度篇](#3)*[腾讯篇](#4)*[美团篇](#5)*[头条篇](#6)*[滴滴篇](#7)*[京东篇](#8)*[MySQL篇](#9)*[Redis篇](#10)*[MongDB篇]( #11)*[Zookeeper篇](#12)*[Nginx篇](#13)*[算法篇](#14)*[内存篇](#15)*[cpu篇](#16)*[磁盘篇](#17)*[网络通信篇](#18)*[安全篇](#19)*[并发篇](#20)<h3id="1">阿里篇</h3>如何实现一个高效的单向链表逆序输出?1.1.2已知sqrt(2)约等于1.414,要求不用数学库,求 sqrt(2)精确到小数点后10位1.1.3给定一个二叉搜索树(BST),找到树中第K小的节点LRU缓存机制关于epoll和select的区别,以下哪些说法是正确的从innodb的索引结构分析,为什么索引的key长度不能太长MySQL的数据如何恢复到任意时间点?NFS和SMB是最常见的两种NAS(NetworkAttachedStorage)协议,当把一个文件系统同时通过NFS和SMB协议共享给多个主机访问时,以下哪些说法是错误的输入pingIP后敲回车,发包前会发生什么?1.2.0请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送?有一批气象观测站,现需要获取这些站点的观测数据,并存储到Hive中。但是气象局只提供了api查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?如何实现两金额数据相加(最多小数点两位)关于并行计算的一些基础开放问题1.2.5请计算XILINX公司VU9P芯片的算力相当于多少TOPS给出计算过程与公式一颗现代处理器,每秒大概可以执行多少条简单的 MOV指令,有哪些主要的影响因素请分析MaxCompute产品与分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势对大数据平台中的元数据管理是怎么理解的,元数据收集管理体系是怎么样的,会对大数据应用有什么样的影响你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述1.3.0在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行IO读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性最大频率栈给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计如果让你来设计一个支持数据库、NOSQL和大数据之间数据实时流动的数据流及处理的系统,你会考虑哪些问题?如何设计?给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度假如给你一个新产品,你将从哪些方面来保障它的质量?请评估一下程序的执行结果?<br><h3id="2">华为篇</h3>2.1.0static有什么用途?(请至少说明两种)#2.1.1引用与指针有什么区别?描述实时系统的基本特性全局变量和局部变量在内存中是否有区别?如果有,是什么区别?什么是平衡二叉树?堆栈溢出一般是由什么原因导致的?什么函数不能声明为虚函数?冒泡排序算法的时间复杂度是什么?写出floatx与“零值”比较的if语句Internet采用哪种网络协议?该协议的主要层次结构?2.2.0Internet物理地址和IP地址转换采用什么协议?IP地址的编码分为哪俩部分?用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。不能做switch()的参数类型是intA[nSize],其中隐藏着若干 0,其余非0整数,写一个函数intFunc(int*A,intnSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为 100的组合个数实现一个函数,把一个字符串中的字符从小写转为大写随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数求2~2000的所有素数.有足够的内存,要求尽量快A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。2.3.0将单向链表reverse,如ABCD变成DCBA只能搜索链表一次。将二叉树的两个孩子换位置,即左变右,右变左。不能用递规。以下属于物理层的设备是?在以太网中,是根据()地址来区分不同的设备的?以下为传输层协议的是?235以下对MAC地址描述正确的是?以下属于数据链路层功能的是?IEEE802.3U标准是指?如果要将两计算机通过双绞线直接连接,正确的线序是?2.3.9在V.35和V.24规程中,控制信号RTS表示?2.4.0路由器作为网络互连设备,必须具备以下哪些特点?路由器的作用有?调用上一条历史命令的快捷键是?2.4.3交换机工作在OSI七层的哪一层?2.4.4以下对CSMA/CD描述正确的是?245以下对STOREANDFORWAR描述正确的是?以下对交换机工作方式描述正确的是?247VLAN的主要作用有?在交换机中用户权限分为几个级别?249在路由器的配置过程中查询以 S开头所有命令的方法是?2.5.0第一次配置路由器时可以使用的方法为?在何种状态下可以为路由器改名?262.5.2某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有台计算机,每个子公司在一个网段中,则子网掩码应设为?26与9mask24属于同一网段的主机IP地址是?ARP协议的作用是?2.5.5当路由器接收的IP报文的TTL值等于1时,采取的策略是?在NetWare网络中,客户需要访问某个类型的服务器时,首先要发送一个广播报文来寻找服务器?IPX地址网络地址有()个字节?对于帧中继描述正确的是?2.5.9对于INVERSEAR啲描述正确的是?<br><h3id="3">百度篇</h3>3.1.0在函数内定义一个字符数组,用gets函数输入字符串的时候,如果输入越界,为什么程序会崩溃?C++中引用与指针的区别C/C++程序的内存分区快速排序的思想、时间复杂度、实现以及优化方法IO模型——IO多路复用机制?常用的Linux命令C中变量的存储类型有哪些?动态规划的本质实践中如何优化MySQL?什么情况下设置了索引但无法使用?3.2.0SQL语句的优化数据库索引的底层实现原理和优化322HTTP禾口HTTPS的主要区另U?如何设计一个高并发的系统?两条相交的单向链表,如何求他们的第一个公共节点?求单向局部循环链表的环入口?IP地址如何在数据库中存储 ?new/delete和malloc/free的底层实现?overload、override、overwrite的介绍?小端/大端机器?3.3.0守护进程多线程的优缺点长连接与短连接二分图应用于最佳匹配问题(游客对房间的满意度之和最大问题)class与struct的区别?虚函数和纯虚函数menset()函数337实现一个函数,对一个正整数 n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。找到满足条件的数组一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL3.4.0海量日志数据,提取出某日访问百度次数最多的那个IP3.4.1有10个文件,每个文件1G,每个文件的每一行都存放的是用户的 query,每个文件的query都可能重复。如何按照query的频度排序?蚂蚁爬杆问题当在浏览器中输入一个url后回车,后台发生了什么?比如输入 url后,你看到了百度的首页,那么这一切是如何发生的呢?判断两棵树是否相等,请实现两棵树是否相等的比较,相等返回 1,否则返回其他值,并说明算法复杂度三个警察和三个囚徒的过河问题从300万字符串中找到最热门的10条3.4.7如何找出字典中的兄弟单词。给定一个单词 a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用0(n)的复杂度的算法找出这个数。找出被修改过的数字3.5.0设计DNS服务器中cache的数据结构。要求设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。(题目还给出了一系列的数据,比如:站点数总共为5000万,IP地址有1000万,等等)3.5.2找出第k大的数字所在的位置。写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。给40亿个不重复的unsignedint的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中?在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为 2G。时分秒针在一天之类重合多少次?(24小时)将多个集合合并成没有交集的集合。平面内有11个点,由它们连成48条不同的直线,由这些点可连成多少个三角形?<br><h3id="4">腾讯篇</h3>Java基础4.1.0JAVA中的几种基本数据类型是什么,各自占用多少字节。String类能被继承吗,为什么。String,Stringbuffer,StringBuilder的区别。ArrayList和LinkedList有什么区别。讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式, hashcode,扩容,默认容量等。JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么 ,类可以实现多个接口么。继承和聚合的区别在哪。4.2.010模型有哪些,讲讲你理解的nio,他和bio,aio的区别是啥,谈谈reactor模型。反射的原理,反射创建类实例的三种方式是什么。反射中,Class.forName和ClassLoader区别。描述动态代理的几种实现方式,分别说出相应的优缺点。动态代理与cglib实现的区别。4.2.5为什么CGlib方式可以对接口实现代理。final的用途。写出三种单例模式实现。4.2.8如何在父类中为子类自动完成所有的 hashcode和equals实现?这么做有何优劣。请结合00设计理念,谈谈访问修饰符 public、private、protected、default在应用设计中的作用。4.3.0深拷贝和浅拷贝区别。数组和链表数据结构描述,各自的时间复杂度。error和exception的区别,CheckedException,RuntimeException的区别。请列出5个运行时异常。在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么。4.3.5说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法。在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。4.3.7这样的a.hashcode()有什么用,与a.equals(b)有什么关系。有没有可能2个不相等的对象有相同的 hashcode。439Java中的HashSet内部是如何工作的。4.4.0什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。java8的新特性。JVM什么情况下会发生栈内存溢出。JVM的内存结构,Eden和Survivor比例。JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为 Eden和Survivor。JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数。4.4.6你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms和G1,包括原理,流程,优缺点。垃圾回收算法的实现原理。当出现了内存溢出,你怎么排错。JVM内存模型的相关知识了解多少,比如重排序,内存屏障, happen-before,主内存,工作内存等。4.5.0简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。4.5.1讲讲JAVA的反射机制。你们线上应用的JVM参数有哪些。g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择。怎么打出线程栈信息。开源框架简单讲讲tomcat结构,以及其类加载器流程,线程模型等。tomcat如何调优,涉及哪些参数。讲讲Spring加载流程。SpringAOP的实现原理。讲讲Spring事务的传播属性。4.6.0Spring如何管理事务的。Spring怎么配置事务(具体说出一些关键的xml元素)。说说你对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的。Springmvc中DispatcherServlet初始化过程。netty的线程模型,netty如何基于reactor模型上实现的。为什么选择netty。466什么是TCP粘包,拆包。解决方式是什么。netty的fashwheeltimer的用法,实现原理,是否出现过调用不够准时,怎么解决。netty的心跳处理在弱网下怎么办。netty的通讯协议是什么样的。4.7.0springmvc用到的注解,作用是什么,原理。springboot启动机制。操作系统Linux系统下你关注过哪些内核参数,说说你知道的。Linux下10模型有几种,各自的含义是什么。epoll和poll有什么区别。用一行命令查看文件的最后五行。用一行命令输出正在运行的java进程。介绍下你理解的操作系统中线程切换过程。进程和线程的区别。4.8.0top命令之后有哪些内容,有什么作用。线上CPU爆高,请问你如何找到问题所在。<br><h3id="5">美团篇</h3>5.1.0java虚拟机内存模型内存溢出一般发生在哪个区?永久代会不会导致内存溢出?动态加载类的框架了解哪些?动态代理一般有哪几种实现方式?动态代理的应用场景有哪些?栈会不会溢出?栈溢出一般抛什么异常?jvm在哪里设置栈的大小?设置的参数是什么?用过哪些命令查看jvm的状态、堆栈信息?jvm的垃圾回收机制?java类加载机制?如何实现自定义类加载器? findClass与loadClass的区别?String、StringBuffer、StringBuilder的区别?对应的使用场景?如何实现不可变的类?5.2.0浅复制和深复制?怎样实现深复制?HashMap、HashTable、ConcurrentHashMap的区别?522CAS是一种什么样的同步机制?NIO的原理,包括哪几个组件?简单介绍一下java的反射机制?反射在哪些地方有应用场景?spring加载bean的流程?java线程池?线程池构造函数的几个参数含义?keepAliveTime解释一下?一个接口,要去调用另外5个接口,每一个接口都会返回数据给这个调用接口,调用接口要对数据进行合并并返回给上层。这样一种场景可能用到并发包下的哪些类?你会怎么去实现这样的业务场景?CountDownLatch和CyclicBarrier的区别?线程加锁有哪些方式?synchronized和lock的区别?5.3.0volatile关键字的作用?为什么使用 AtomicLong而不使用Long?AtomicLong的底层是怎么实现的?mysql的存储引擎有哪几种?sql优化有哪些着手点?组合索引的最左前缀原则的含义?springmvc处理请求的流程?spring的事务怎么使用?事务回滚?自定义异常?脏读?幻读?tcp四次挥手的过程?TIME_WAIT为什么至少设置两倍的 MSL时间?get和post请求的区别?cookie和session的请求?了解哪些开源的中间件?缓存?消息?分布式框架?5.4.0用到过哪些设计模式?单例模式的实现?数据库的事务实现原理、操作过程、如何做到事物之间的独立性等问题数据库的隔离级别、MVCC乐观锁、悲观锁、互斥锁、读写锁的原理实现与区别线程的生命周期一致性hash算法原理与应用CAP原则548CAS操作分布式raft算法<br><h3id="6">头条篇</h3>6.1.05个人去一个海岛寻宝,最后一共找到了100枚金币。他们约定了一个分配方案。给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。—个环有10个节点,编号0-9。从0点出发,走N步又能回到0点,共有多少种走法?一个乱序数组,求第K大的数。排序方式使用字典序。一棵二叉树,求最大通路长度。(即最大左右子树高度之和)进程和线程的区别,使用线程真的能节省时间?go协程的调度方式,使用协程真的能节省时间?6.1.7水平触发边沿触发的区别?在边沿触发下,一个 socket有500的数据,已读取200然后不再处理,是不是剩下的300就永远无法读取?有函数如下,输入1,返回什么?6.1.9设计http协议,A端发送AAAA,至少让B端知道AAAA已发送完成。6.2.0流量总入口为api_gateway,api_gateway挂了会导致全部挂挂,用什么机制增大可用性?mysql为什么要用b+树,不用平衡二叉树做索引结构?创建数据库索引应该怎么考虑?使用int做primarykey和使用string有什么优劣?数据库分表的方法?表结构,订单纪录如下,写一个语句,求卖的最好的top10product_id。6.2.6微服务,A服务请求B服务B1接口,B1接口又请求A服务A2接口。会不会有问题?不使用高级工具,只使用Linux自带的工具,你会如何debug?如何预估一个mysql语句的性能?go函数中,返回值未命名,发生了panic,但是在函数内recover了。函数返回什么值?6.3.0socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。这次通信一定失败吗?如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达?free-h,buffers和cached有什么不同后台进程有什么特点,如果要你设计一个进程是后台进程,你会考虑什么僵尸进程是什么,如果产生一个僵尸进程,如何查找僵尸进程孤儿进程是什么一个进程有20个线程,在某个线程中调用 fork,新的进程会有20个线程吗?tcp/ip流量控制和拥塞控制301/302有什么区别?应用上有什么异同。50X相关错误码的内涵是什么?6.4.0httpreq和resp的中数据有哪些什么是连接的半打开,半关闭状态642假如一个业务依赖单点redis,此redis故障将导致业务不可用,如何改进redissharding有哪些做法当大量数据要求用redis保存,单机单点难以满足需要,设计(换寻找)一个负载均衡的方案645当redis采用hash做sharding,现在有8个节点,负载方案是pos=hash(key)%8,然后保存在pos节点上。这样做有什么好处坏处?当8个节点要扩充到10个节点,应该怎么办?有什么更方便扩充的方案吗?(一致性hash,presharding)如何保证redis和数据库数据的一致性。比如用户名既保存在数据库,又保存在redis做缓存。有如下操作update_db(username);update_redis(username)。但是执行update_db后故障,update_redis没有执行。有什么简单办法解决这个问题。<h3id="7">滴滴篇</h3>7.1.0B+树、B-树的区别?数据库隔离级别,幻读和不可重复读的区别?有hell,well,hello,world等字符串组,现在问能否拼接成helloworld,代码实现。快排算法实现线程安全的单例模式25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛?kmp算法next数组的求解思路数组中有三个数字出现超过3/4,求这三个数字?1到n+2个数组中缺了两个数,如何用 0(n)时间,0(1)空间找到这两个数字。一条线段长为1,随机选两个点,将改线段分为三段,三段能成三角形的概率是多少?7.2.0有一个教授,他三个学生,脑袋背后分别各写了一个数字,其中一个数字是另外两个数字的和,经过几轮后,有一个学生猜出了自己的数字请问是什么原因?B+树做索引时,B+树通常高度为多少层?要参考哪些条件?<br><h3id="8">京东篇</h3>8.1.0—般sql注入怎么发现触点的,从源码阐述sqlmap如何测试注入点的。masscan扫描端口时靠什么检测,为什么这么快?请详述.你写过哪些小工具,你为你使用过的工具做过什么修改.8.1.3如何提高采用python编写的扫描速度,谈谈对 GIL锁的了解.你觉得你发现的那个漏洞影响比较大.常见的web漏洞有哪些.有没有玩过硬件安全,研究程度如何.反爬虫,如果是你如何进行反爬虫,如何绕过反爬措施。 使用无头浏览器被检测到了,如何绕过nmap扫描如何进行扫描。发包与协议,握手和不握手,哪些协议握手,哪些不握手.如何不直接接触目标服务器探测对方端口是否开放8.1.9有没有自己编写过yara扫描模块,如果要解决扫描{k1:v1,k2:v2,k3:v3},保证同时在k1中的v1里出现特定值,k2中出现v2特定值,以及k3,v3。怎么实现8.2.0xss什么原理,如何自己实现一个beef类似的xss平台.既然这样实现,面临的跨域如何解决?ip频率限制,ip信誉度模型?SCTP协议是什么?如何使用SCTP优化网络?<br><h3id="9">mysql篇</h3>9.1.0主键超键候选键外键数据库事务的四个特性及含义视图的作用,视图可以更改么?drop,delete与truncate的区别索引的工作原理及其种类连接的种类数据库范式数据库优化的思路存储过程与触发器的区别<br><h3id="10">redis篇</h3>10.1.0使用Redis有哪些好处?redis相比memcached有哪些优势?redis常见性能问题和解决方案MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据Memcache与Redis的区别都有哪些?Redis常见的性能问题都有哪些?如何解决?redis最适合的场景[10.1.7Redis的同步机制了解么?](/0voice/interview_internal_reference/blob/master/3.1.7%20Redis%E7%9A%84%E5%90%8C%E6%AD%A5%E6%9C%BA%E5%88%B6%E4%BA%86%E8%A7%A3%E4%B9%88%EF%BC%9F.md)是否使用过Redis集群,集群的原理是什么?redis集群如何保证一致性?<br><h3id="11">MongDB篇</h3>11.1.0什么是MongoDB?MongoDB是由哪种语言写的?MongoDB的优势有哪些?什么是数据库?什么是集合?什么是文档?MongoDB和关系型数据库术语对比图什么是“mongod”?“mongod”参数有什么?什么是“mongo”?11.2.0MongoDB哪个命令可以切换数据库?什么是非关系型数据库?非关系型数据库有哪些类型?为什么用MOngoDB?在哪些场景使用MongoDB?MongoDB中的命名空间是什么意思哪些语言支持MongoDB?在MongoDB中如何创建一个新的数据库?在MongoDB中如何查看数据库列表?MongoDB中的分片是什么意思?11.3.0如何查看使用MongoDB的连接?什么是复制?在MongoDB中如何在集合中插入一个文档?在MongoDB中如何除去一个数据库?在MongoDB中如何创建一个集合?在MongoDB中如何查看一个已经创建的集合?在MongoDB中如何删除一个集合?为什么要在MongoDB中使用分析器?MongoDB支持主键外键关系吗?MongoDB支持哪些数据类型?11.4.0为什么要在MongoDB中用"Code"数据类型?为什么要在MongoDB中用"RegularExpression"数据类型?为什么在MongoDB中使用"ObjectID"数据类型?如何在集合中插入一个文档?1144 “ObjectID”有哪些部分组成?在MongoDb中什么是索引?如何添加索引?MongoDB有哪些可替代产品?如何查询集合中的文档?用什么方法可以格式化输出结果?11.5.0如何使用"AND"或"OR"条件循环查询集合中的文档?在MongoDB中如何更新数据?如何删除文档?11.5.3在MongoDB中如何排序?什么是聚合?在MongoDB中什么是副本集?Mongodb存储特性与内部原理?<br><h3id="12">Zookeeper篇</h3>12.1.0zookeeper是什么?zookeeper提供了什么?zookeeper文件系统zookeeper的四种类型的znodezookeeper通知机制zookeeper有哪些应用场景?zk的命名服务zk的配置管理服务zk的集群管理zk的分布式锁12.2.0zk队列管理zk数据复制zk的工作原理zk是如何保证事物的顺序一致性zk集群下server工作状态zk是如何选举Leader的?zk同步流程分布式通知和协调<br><h3id="13">nginx篇</h3>13.1.0请解释一下什么是Nginx?13.1.1请列举Nginx的一些特性?13.1.2请列举Nginx和Apache之间的不同点?13.1.3请解释Nginx如何处理HTTP请求。13.1.4在Nginx中,如何使用未定义的服务器名称来阻止处理请求?13.1.5使用“反向代理服务器”的优点是什么?13.1.6请列举Nginx服务器的最佳用途。13.1.7请解释Nginx服务器上的Master和Worker进程分别是什么?13.1.8请解释你如何通过不同于80的端口开启Nginx?13.1.9请解释是否有可能将Nginx的错误替换为502错误、503?13.2.0在Nginx中,解释如何在URL中保留双斜线?13.2.1请解释ngx_http_upstream_module的作用是什么?

请解释什么是C10K问题,后来是怎么解决的?请陈述stub_status和sub_filter指令的作用是什么?解释Nginx是否支持将请求压缩到上游?解释如何在Nginx中获得当前的时间?用Nginx服务器解释-s的目的是什么?解释如何在Nginx服务器上添加模块?题?nginx中多个work进程是如何监听同一个端口的?如何处理客户连接的惊群问题?nginx程序的热更新是如何做的?部分答案**问题**:如何实现一个高效的单向链表逆序输出?**出题人**:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人**参考答案**:下面是其中一种写法,也可以有不同的写法,比如递归等。供参考。typedefstructnode{intdata;structnode*next;node(intd):data(d),next(NULL){}}node;voidreverse(node*head){if(NULL==head||NULL==head->next){return;}node*prev=NULL;node*pcur=head->next;node*next;while(pcur!=NULL){if(pcur->next==NULL){pcur->next=prev;break;}next=pcur->next;pcur->next=prev;prev=pcur;pcur=next;head->next=pcur;node*tmp=head->next;while(tmp!=NULL){cout<<tmp->data<<"\t";tmp=tmp->next;}}**题目**:已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位。**出题人**:——阿里巴巴出题专家:文景/阿里云CDN资深技术专家**参考答案**:*考察点1.基础算法的灵活应用能力(二分法学过数据结构的同学都知道,但不一定往这个方向考虑;如果学过数值计算的同学,应该还要能想到牛顿迭代法并解释清楚)退出条件设计*解决办法已知sqrt(2)约等于1.414,那么就可以在(1.4,1.5)区间做二分查找,如:high=>1.5low=>1.4mid=>(high+low)/2=1.451.45*1.45>2?high=>1.45:low=>1.45循环到c)退出条件a)前后两次的差值的绝对值<=0.0000000001,则可退出constdoubleEPSINON=0.0000000001;doublesqrt2(){doublelow=1.4,high=1.5;doublemid=(low+high)/2;while(high-low>EPSINON){if(mid考察点考察点1.基础数据结构的理解和编码能力2.递归使用{high=mid;}else{low=mid;}mid=(high+low)/2;}returnmid;}**题目*示例5/\36/\24:给定一个二叉搜索树*示例5/\36/\24**出题人**:阿里巴巴出题专家:文景/阿里云CDN资深技术专家**参考答案**:说明:保证输入的K满足1<=K<=(节点数目)root树相关的题目,第一眼就想到递归求解,左右子树分别遍历。联想到二叉搜索树的性质,root大于左子树,小于右子树,如果左子树的节点数目等于K-1,那么root就是结果,否则如果左子树节点数目小于K-1,那么结果必然在右子树,否则就在左子树。因此在搜索的时候同时返回节点数目,跟K做对比,就能得出结果了。*Definitionforabinarytreenode.**/publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}classSolution{privateclassResultType{booleanfound;//是否找到intval;//节点数目ResultType(booleanfound,intval)this.found=found;this.val=val;publicintkthSmallest(TreeNoderoot,intk){returnkthSmallestHelper(root,k).val;}privateResultTypekthSmallestHelper(TreeNoderoot,intk){if(root==null){returnnewResultType(false,0);}ResultTypeleft=kthSmallestHelper(root.left,k);//左子树找到,直接返回if(left.found){returnnewResultType(true,left.val);}//左子树的节点数目=K-1,结果为root的值if(k-left.val==1){returnnewResultType(true,root.val);//右子树寻找ResultTyperight=kthSmallestHelper(root.right,k-left.val-1);if(right.found){returnnewResultType(true,right.val);}//没找到,返回节点总数returnnewResultType(false,left.val+1+right.val);}}**题目出题人**:文景/阿里云CDN出题人**:文景/阿里云CDN资深技术专家**参考答案**:python版本的:LRU(最近最少使用)缓存数据结构,使它应该支持一下操作: get和put。get(key)-如果key存在于缓存中,则获取key的value(总是正数),否则返回-1。put(key,value)-如果key不存在,请设置或插入value。当缓存达到其容量时,它应该在插入新项目之前使最近最少使用的项目作废。classLRUCache(object):def__init__(self,capacity):linn:typecapacity:intlinnself.cache={}self.keys=[]self.capacity=capacitydefvisit_key(self,key):ifkeyinself.keys:self.keys.remove(key)self.keys.append(key)defelim_key(self):key=self.keys[0]self.keys=self.keys[1:]delself.cache[key]defget(self,key):linn:typekey:int:rtype:intlinnifnotkeyinself.cache:return-1self.visit_key(key)returnself.cache[key]defput(self,key,value):linn:typekey:int:typevalue:int:rtype:voidlinnifnotkeyinself.cache:iflen(self.keys)==self.capacity:self.elim_key()self.cache[key]=valueself.visit_key(key)ouroluuroE——=HH——①EEU——七§u_」d(D巨三s.O巨三S)芍d」q。血SO((O巨三S)1&「qo)pu①dde一C3专。二一xos)9e」eLunue£0._」04=上(CXIolpeonQrlH「qo曰寸二“二L二寸.寸二2二eO二L二2&二L-L一二%6=-%6=-%6==nd=-%6==nd=-%6==nd==nd==HSouroE^p-PU8①SA—PUOO①七u」no」MPUOO①SA丄二-()u-6①q-oo一-ds•--Vu」no」(OPUQEHH七二一JA殳)PUFUJH七olne(@-Um①6c一宀^QedeoHdeo(AlQedeolu¥lpeon#1o-qnd①IPEOnQrlsseQvoidset(intkey,intvalue){autoit=m.find(key);if(it!=m.end())l.erase(it->second);push_front(make_pair(key,value));m[key]=l.begin();if(m.size()>cap){intk=l.rbegin()->first;pop_back();m.erase(k);}}}**问题出题人**:阿里巴巴出题专家:近秋/阿里云数据库产品技术部技术专家参考答案:关于epoll出题人**:阿里巴巴出题专家:近秋/阿里云数据库产品技术部技术专家参考答案epoll和select都是I/O多路复用的技术,都可以实现同时监听多个 I/O事件的状态。epoll相比select效率更高,主要是基于其操作系统支持的I/O事件通知机制,而select是基于轮询机制。epoll支持水平触发和边沿触发两种模式。select能并行支持I/O比较小,且无法修改。**出题人**:阿里巴巴出题专家:寈峰/阿里技术专家**参考答案**:A,B,C**【延伸】那在高并发的访问下,epoll使用那一种触发方式要高效些?当使用边缘触发的时候要注意些什么东西?****题目**:从innodb的索引结构分析,为什么索引的key长度不能太长?**出题人**:阿里巴巴出题专家:近秋/阿里云数据库产品技术部技术专家**参考答案**:key太长会导致一个页当中能够存放的key的数目变少,间接导致索引树的页数目变多,索引层次增加,从而影响整体查询变更的效率。**题目**:MySQL的数据如何恢复到任意时间点?**参考答案出题人**:阿里巴巴出题专家:江岚/阿里巴巴数据技术高级技术专家:恢复到任意时间点以定时的做全量备份,以及备份增量的binlog出题人**:阿里巴巴出题专家:江岚/阿里巴巴数据技术高级技术专家**题目**:NFS和SMB是最常见的两种NAS(NetworkAttachedStorage)协议,当把一个文件系统同时通过NFS和SMB协议共享给多个主机访问时,以下哪些说法是错误的:(多选)不可能有这样的操作,即把一个文件系统同时通过 NFS和SMB协议共享给多个主机访问。主机a的用户通过NFS协议创建的文件或者目录,另一个主机 b的用户不能通过SMB协议将其删除。在同一个目录下,主机 a通过NFS协议看到文件file.txt,主机b通过SMB协议也看到文件file.txt,那么它们是同一个文件。主机a通过NFS协议,以及主机b通过SMB协议,都可以通过主机端的数据缓存,提升文件访问性能。**出题人**:阿里巴巴出题专家:起影/阿里云文件存储高级技术专家**参考答案**:A,B,C**题目**:输入pingIP后敲回车,发包前会发生什么?**出题人**:阿里巴巴出题专家:怀虎/阿里云云效平台负责人**参考答案**:首先根据目的IP和路由表决定走哪个网卡,再根据网卡的子网掩码地址判断目的 IP是否在子网内。如果不在则会通过arp缓存查询IP的网卡地址,不存在的话会通过广播询问目的IP的mac地址,得到后就开始发包了,同时 mac地址也会被arp缓存起来。**题目**:请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?**出题人**:阿里巴巴出题专家:江岚/阿里巴巴数据技术高级技术专家**参考答案**:获取微博通过pull方式还是push方式发布微博的频率要远小于阅读微博流量明星的发微博,和普通博主要区分对待,比如在 sharding的时候,也要考虑这个因素**题目**:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送?请详述技术方案!###**参考答案**:借助消息中间件,通过发布者订阅者模式来进行任务分配master-slave部署,由master来分配任务C不借助任何中间件,且所有节点均等。通过数据库的 update-returning,从而实现节点之间任务的互斥**题目**:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive中。但是气象局只提供了api查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?**出题人**:阿里巴巴出题专家:江岚/阿里巴巴数据技术高级技术专家**参考答案**:A.通过shell或python等调用api,结果先暂存本地,最后将本地文件上传到 Hive中。B通过datax的httpReader和hdfsWriter插件,从而获取所需的数据。C比较理想的回答,是在计算引擎的 UDF中调用查询api,执行UDF的查询结果存储到对应的表中。一方面,不需要同步任务的导出导入;另一方面,计算引擎的分布式框架天生提供了分布式、容错、并发等特性。**题目**:如何实现两金额数据相加(最多小数点两位)?**出题人**:阿里巴巴出题专家:御术/蚂蚁金服数据可视化高级技术专家**参考答案**:其实问题并不难,就是考察候选人对JavaScript数据运算上的认知以及考虑问题的缜密程度,有很多坑,可以用在笔试题,如果用在面试,回答过程中还可以随机加入有很多计算机基础的延伸。回到这个问题,由于直接浮点相与加会失精,所以要转整数;(可以插入问遇到过吗?是否可以举个例子?)。转整数是第一个坑,虽然只有两位可以通过乘以100转整数,但由于乘以一百和除以一百都会出现浮点数的运算,所以也会失精,还是要通过字符串来转;(可以插入问字符串转整数有几种方式?)字符串转整是第二个坑,因为最后要对齐计算,如果没考虑周全先 toFixed(2),对于只有一位小数点数据进入计算就会错误;转整数后的计算是个加分点,很多同学往往就是直接算了,如果可以考虑大数计算的场景,恭喜同学进入隐藏关卡,这就会涉及如何有效循环、遍历、算法复杂度的问题。**题目**:关于并行计算的一些基础开放问题。?如何定义并计算,请分别阐述分布式内存到共享内存模式行编程的区别和实现(例子代码)??请使用MPI和OpenMP分别实现N个处理器对M个变量的求和??请说明SIMD指令在循环中使用的权限?向量化优化有哪些手段??请用Amdahl定律说明什么是并行效率以及并行算法的扩展性?并说明扩展性的性能指标和限制因素,最后请说明在共享内存计算机中,共享内存的限制?OpenMP是怎样实现共享内存编程环境的?MPI阻塞和非阻塞读写的区别?**出题人出题人**:阿里巴巴出题专家:子团/创新产品虚拟化出题人**:阿里巴巴出题专家:子团/创新产品虚拟化&稳定性资深技术专家**参考答案**:(简要答案,但必须触及,可以展开)?同时执行多个/算法/逻辑操作/内存访问/IO,相互独立同时运行,分三个层次:进程级,多个节点分布式内存通过MPI通信并行;线程级,共享内存的多路机器,通过OpenMP实现多线程并行;指令集:通过SIM指令实现单指令多数据。。。。举例吧啦吧啦。?MPI代码,,,OpenMP代码,分别写出来M个元素,N个处理器的累加,后者注意private参数。?SIMD在循环中的应用,限制在于SIMD指令处理的每一个数组的长度, cacheline利用,内部循环间的依赖和条件调用等。?向量化,主要看SSE和AVX指令占比率,通过编译器优化……在loop代码中使用。?性能和计算规模随处理器增加的变化曲线,实测 HPL和峰值HPL比率,能用用Amdahl定律表达Tpar(N)=(an+(1-a)n/N)t+C(n,N),能够讲明白串行部分对整个并行的天花板效应,扩展性能够解释清楚算法的扩展性=并行效率随处理器数目的变化关系,画出来。?共享内存计算机OpenMP对变量的限制描述,EREWCREWERCWCRCW等区另NUMA概念,如何保持coherent等。?写出OpenMP和MPI的核心函数,回答问题即可。 **题目**:请计算XILINX公司VU9P芯片的算力相当于多少TOPS给出计算过程与公式。**出题人**:阿里巴巴出题专家:隐达/阿里云异构计算资深专家**参考答案**:基于不同的算法,这个值在十几到几百之间。但是,如果只是单纯比算力,FPGA和ASICGPU相比并无太大优势,甚至大多时候有较大劣势。FPGA的优势在于高度的灵活性和算法的针对性。**题目**:一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素?**参考答案****及格:**每执行一条mov指令需要消耗1个时钟周期,所以每秒执行的 mov指令和CPU主频相关。在CPU微架构上,要考虑数据预取,乱序执行,多发射,内存stall(前端stall和后端stall)等诸多因素,因此除了cpu主频外,还和流水线上的效率(IPC)强相关,比较复杂的一个问题。**题目**:请分析MaxCompute产品与分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势。**出题人**:阿里巴巴出题专家:云郎/阿里MaxCompute高级产品专家**参考答案**:开放性问题,无标准答案。 **题目**:对大数据平台中的元数据管理是怎么理解的,元数据收集管理体系是怎么样的,会对大数据应用有什么样的影响。**出题人**:阿里巴巴出题专家:映泉/阿里巴巴高级技术专家**参考答案**:开放性问题,无标准答案。**题目**:你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述。**出题人**:阿里巴巴出题专家:映泉/阿里巴巴高级技术专家**参考答案**:开放性问题,无标准答案。**题目**:在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行IO读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性。**出题人**:阿里巴巴出题专家:田磊磊/阿里云文件存储高级技术专家**参考答案**:开放性问题,无标准答案。**题目**:最大频率栈。实现FreqStack,模拟类似栈的数据结构的操作的一个类。 FreqStack有两个函数:push(intx),将整数x推入栈中。pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。?示例:push[5,7,5,7,4,5]pop()->返回5,因为5是出现频率最高的。 栈变成[5,7,5,7,4]。pop()->返回7,因为5和7都是频率最高的,但7最接近栈顶。栈变成[5,7,5,4]。pop()->返回5。栈变成[5,7,4]。pop()->返回4。栈变成[5,7]。**出题人**:阿里巴巴出题专家:屹平/阿里云视频云边缘计算高级技术专家**参考答案**:令freq作为x的出现次数的映射 Map。此外maxfreq,即栈中任意元素的当前最大频率,因为我们必须弹出频率最高的元素。当前主要的问题就变成了:在具有相同的(最大)频率的元素中,怎么判断那个元素是最新的?我们可以使用栈来查询这一信息:靠近栈顶的元素总是相对更新一些。为此,我们令group作为从频率到具有该频率的元素的映射。到目前,我们已经实现了FreqStack的所有必要的组件。算法:实际上,作为实现层面上的一点细节,如果 x的频率为f,那么我们将获取在所有group[i](i<=f)中的x,而不仅仅是栈顶的那个。这是因为每个group[i]都会存储与第i个x副本相关的信息。最后,我们仅仅需要如上所述维持 freq,group,以及maxfreq。**参考代码***:classFreqStack{Map<Integer,Integer>freq;Map<Integer,Stack<Integer>>group;intmaxfreq;publicFreqStack(){freq=newHashMap();group=newHashMap();maxfreq=0;}publicvoidpush(intx){intf=freq.getOrDefault(x,0)+1;freq.put(x,f);if(f>maxfreq)maxfreq=f;puteIfAbsent(f,z->newStack()).push(x);}publicintpop(){intx=group.get(maxfreq).pop();freq.put(x,freq.get(x)-1);if(group.get(maxfreq).size()==0)maxfreq--;returnx;}}'、' 参考代码**:publicListNode参考代码**:publicListNoderemoveNthFromEnd(ListNodehead,intn){ListNodedummy=newListNode(0);dummy.next=head;ListNodefirst=dummy;ListNodesecond=dummy;//AdvancesFirstpointersothatthegapbetweenfirstandsecondis//nnodesapartfor(inti=1;i<=n+1;i++){first=first.next;}//MoveFirsttotheend,maintainingthegapwhile(first!=null){first=first.next;second=second.next;?示例:给定一个链表:1->2->3->4->5,和n=2.当删除了倒数第二个节点后,链表变为1->2->3->5.说明:给定的n保证是有效的。要求:只允许对链表进行一次遍历。**出题人**:阿里巴巴出题专家:屹平/阿里云视频云边缘计算高级技术专家**参考答案**:我们可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动n+1步,而第二个指针将从列表的开头出发。现在,这两个指针被 nn个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔, 直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第n个结点。我们重新链接第二个指针所引用的结点的next指针指向该结点的下下个结点。}second.next=second.next.next;returndummy.next;}**复杂度分析:***时间复杂度:0(L),该算法对含有L个结点的列表进行了一次遍历。因此时间复杂度为O(L)。*空间复杂度:0(1),我们只用了常量级的额外空间。 **题目**:如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计?**出题人**:阿里巴巴出题专家:千震/阿里云数据库高级技术专家**参考答案**:开放性问题,无标准答案。**题目**:如果让你来设计一个支持数据库、N0SQL和大数据之间数据实时流动的数据流及处理的系统,你会考虑哪些问题?如何设计?**出题人**:阿里巴巴出题专家:千震/阿里云数据库高级技术专家**参考答案**:开放性问题,无标准答案。**题目**:假如给你一个新产品,你将从哪些方面来保障它的质量?**出题人**:阿里巴巴出题专家:晨晖/阿里云中间件技术部测试开发专家**参考答案**:可以从代码开发、测试保障、线上质量三个方面来保障。在代码开发阶段,有单元测试、代码 Review、静态代码扫描等;测试保障阶段,有功能测试、性能测试、高可用测试、稳定性测试、兼容性测试等;在线上质量方面,有灰度发布、紧急回滚、故障演练、线上监控和巡检等。 **题目**请评估一下程序的执行结果?publicclassSynchronousQueueQuiz{publicstaticvoidmain(String[]args)throwsException{BlockingQueue<Integer>queue=newSynchronousQueue<>();System.out.print(queue.offer(1)+"");System.out.print(queue.offer(2)+"");System.out.print(queue.offer(3)+"");System.out.print(queue.take()+"");System.out.println(queue.size());}}truetruetrue13truetruetrue(阻塞)falsefalsefalsenull0falsefalsefalse(阻塞)**出题人**:阿里巴巴出题专家:桃谷/阿里云中间件技术专家**参考答案**:D**参考答案**:(1)速度快,因为数据存在内存中,类似于 HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2)支持丰富数据类型,支持 string,list,set,sortedset,hash(3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执(4)丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除**redis相比memcached有哪些优势?**:**参考答案**:(1)memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型(2)redis的速度比memcached快很多(3)redis可以持久化其数据**题目**:redis常见性能问题和解决方案**参考答案**:(1)Master最好不要做任何持久化工作,如 RDB内存快照和AOF日志文件(2)如果数据比较重要,某个 Slave开启AOF备份数据,策略设置为每秒同步一次(3)为了主从复制的速度和连接的稳定性, Master和Slave最好在同一个局域网内(4)尽量避免在压力很大的主库上增加从库(5)主从复制不要用图状结构,用单向链表结构更为稳定,即:Master<-Slave1<-Slave2<-Slave3...这样的结构方便解决单点故障问题,实现 Slave对Master的替换。如果Master挂了,可以立刻启用Slavel做Master,其他不变。**题目**:MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据**参考答案**:相关知识:redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。 redis提供6种数据淘汰策略:voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰allkeys-Iru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰no-enviction(驱逐):禁止驱逐数据**题目**:zookeeper的四种类型的znode**参考答案**:1、PERSISTENT-持久化目录节点客户端与zookeeper断开连接后,该节点依旧存在2、 PERSISTENT_SEQUENTIAl持久化顺序编号目录节点客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号3、 EPHEMERAL-临时目录节点客户端与zookeeper断开连接后,该节点被删除4、 EPHEMERAL_SEQUENTIAL临时顺序编号目录节点客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号**题目**:Memcache与Redis的区别都有哪些?**参考答案**:、存储方式Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。Redis有部份存在硬盘上,这样能保证数据的持久性。、数据支持类型Memcache对数据类型支持相对简单。Redis有复杂的数据类型。、使用底层模型不同它们之间底层实现方式以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。,value大小redis最大可以达到1GB,而memcache只有1MB**题目**:Redis常见的性能问题都有哪些?如何解决?**参考答案**:Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作, 当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。MasterAOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是 AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。Master调用BGREWRITEAO重写AOF文件,AOF在重写的时候会占大量的 CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性, Slave和Master最好在同一个局域网内**题目**:redis最适合的场景**参考答案**:Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就会有疑问,似乎Redis更像一个加强版的 Memcached,那么何时使用Memcached,何时使用Redis呢?如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:Redis不仅仅支持简单的k/v类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用**题目**:Redis的同步机制了解么?**参考答案参考答案**参考答案**:MongoDB用c++编写的,流行的开源数据库 MySQL也是用C++开发的。C++1983年发行是一种使用广泛的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式。**题目**:MongoDB的优势有哪些**参考答案**:面向文档的存储:以JSON格式的文档保存数据。*任何属性都可以建立索引。复制以及高可扩展性。*自动分片。丰富的查询功能。*快速的即时更新。从从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存 buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。**题目**:是否使用过Redis集群,集群的原理是什么?**参考答案**:RedisSentinal着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。RedisCluster着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。**题目**:什么是MongoDB**参考答案**:MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用 BSON存储文档数据。2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。获得安装包和查看详细的API可以访问官网网址**题目**:MongoDB是由哪种语言写的*来自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论