2018最新BAT大大数据面试题

合集下载

bat面试题库及答案

bat面试题库及答案

bat面试题库及答案BAT面试题库及答案一、单项选择题(每题 2 分,共 20 分)1. 以下哪个不是Java中的基本数据类型?A. intB. floatC. StringD. double2. 在HTML中,用于定义最重要的内容的标签是?A. `<h1>`B. `<p>`C. `<div>`D. `<span>`3. 数据库中,用于删除表中所有数据但不删除表本身的操作是?A. DROP TABLEB. TRUNCATE TABLEC. DELETE FROMD. CLEAR TABLE4. 在Python中,以下哪个是正确的列表推导式?A. `[x for x in range(10) if x % 2 == 0]`B. `{x for x in range(10) if x % 2 == 0}`C. `(x for x in range(10) if x % 2 == 0)`D. `[x for x in range(10) if x % 2 != 0]`5. 在JavaScript中,以下哪个方法用于将字符串转换为大写?A. toUpperCase()B. toLowerCase()C. toCapitalize()D. toCamelCase()6. 在CSS中,以下哪个属性用于设置元素的背景颜色?A. colorB. background-colorC. bgcolorD. text-color7. 在SQL中,以下哪个函数用于计算字符串的长度?A. LENGTH()B. LEN()C. SIZE()D. STRING_LENGTH()8. 在Linux系统中,哪个命令用于查看当前目录下的所有文件和文件夹?A. lsB. dirC. pwdD. cd9. 在计算机网络中,HTTP协议默认使用的端口号是?A. 21B. 22C. 80D. 44310. 在面向对象编程中,封装的主要目的是?A. 提高代码的运行速度B. 增加代码的可读性C. 隐藏对象的内部状态和行为D. 增加对象的内存使用二、多项选择题(每题 2 分,共 20 分)11. 以下哪些是Java集合框架中的接口?A. ListB. MapC. SetD. Stream12. 在HTML5中,以下哪些元素用于语义化结构?A. `<article>`B. `<section>`C. `<div>`D. `<footer>`13. 数据库事务的四大特性包括?A. 原子性B. 一致性C. 隔离性D. 持久性14. 在Python中,以下哪些是合法的变量名?A. _variableB. 2variableC. variable_D. variable$15. 在JavaScript中,以下哪些是全局对象?A. windowB. documentC. consoleD. Math16. 在CSS中,以下哪些属性用于设置文本的样式?A. font-sizeB. font-familyC. colorD. background-color17. 在SQL中,以下哪些是聚合函数?A. COUNT()B. SUM()C. AVG()D. MAX()18. 在Linux系统中,以下哪些命令用于文件操作?A. cpB. mvC. rmD. grep19. 在计算机网络中,以下哪些协议工作在传输层?A. TCPB. UDPC. HTTPD. FTP20. 在面向对象编程中,以下哪些是继承的特点?A. 代码重用B. 多态性C. 封装性D. 扩展性三、判断题(每题 2 分,共 20 分)21. Java中的String对象是不可变的。

bat常问面试题及答案

bat常问面试题及答案

bat常问面试题及答案 通用知识试卷 一、单项选择题(每题 2 分,共 10 题) 1. 以下哪个不是BAT(百度、阿里巴巴、腾讯)的简称? A. 百度 B. 阿里巴巴 C. 腾讯 D. 京东 2. 百度的搜索引擎使用的核心技术是什么? A. 云计算 B. 人工智能 C. 大数据分析 D. 搜索引擎算法 3. 阿里巴巴的创始人是谁? A. 马化腾 B. 马云 C. 李彦宏 D. 丁磊 4. 腾讯的即时通讯软件QQ是在哪一年推出的? A. 1998 B. 1999 C. 2000 D. 2001 5. 以下哪个不是BAT公司的业务领域? A. 电子商务 B. 社交媒体 C. 搜索引擎 D. 汽车制造 6. 百度的人工智能平台叫什么? A. 百度大脑 B. 腾讯云 C. 阿里云 D. 京东云 7. 阿里巴巴的支付平台支付宝是哪一年成立的? A. 2003 B. 2004 C. 2005 D. 2006 8. 腾讯的游戏平台叫什么? A. 腾讯游戏 B. 百度游戏 C. 阿里游戏 D. 京东游戏 9. 百度的地图服务叫什么? A. 百度地图 B. 腾讯地图 C. 阿里地图 D. 京东地图 10. 阿里巴巴的云计算服务叫什么? A. 阿里云 B. 腾讯云 C. 百度云 D. 京东云 二、多项选择题(每题 2 分,共 10 题) 1. 以下哪些是BAT公司的共同特点? A. 都是互联网公司 B. 都有电子商务业务 C. 都有社交媒体业务 D. 都有搜索引擎业务 2. 以下哪些是百度的产品或服务? A. 百度贴吧 B. 百度网盘 C. 百度地图 D. 支付宝 3. 阿里巴巴旗下的电商平台包括哪些? A. 淘宝网 B. 天猫 C. 京东 D. 拼多多 4. 腾讯的社交平台包括哪些? A. QQ B. 微信 C. 微博 D. 抖音 5. 以下哪些是BAT公司的共同投资领域? A. 人工智能 B. 大数据 C. 云计算 D. 房地产 6. 以下哪些是百度的人工智能产品? A. 百度大脑 B. 小度在家 C. 腾讯云 D. 阿里云 7. 阿里巴巴的金融服务包括哪些? A. 支付宝 B. 余额宝 C. 腾讯理财通 D. 京东白条 8. 腾讯的游戏产品包括哪些? A. 王者荣耀 B. 英雄联盟 C. 刺激战场 D. 阴阳师 9. 百度的云计算服务包括哪些? A. 百度云 B. 阿里云 C. 腾讯云 D. 京东云 10. 阿里巴巴的物流服务包括哪些? A. 菜鸟网络 B. 京东物流 C. 顺丰速运 D. 圆通速递 三、判断题(每题 2 分,共 10 题) 1. 百度是中国最大的搜索引擎公司。(对) 2. 阿里巴巴的总部设在杭州。(对) 3. 腾讯的总部设在深圳。(对) 4. BAT三家公司都是国有企业。(错) 5. 百度的搜索引擎技术是基于人工智能的。(对) 6. 阿里巴巴的支付宝是全球最大的移动支付平台之一。(对) 7. 腾讯的微信用户数量已经超过了10亿。(对) 8. 百度的百度地图是中国最大的地图服务提供商。(对) 9. 阿里巴巴的淘宝网是中国最大的在线购物平台。(对) 10. 腾讯的QQ是中国最早的即时通讯软件。(对) 四、简答题(每题 5 分,共 4 题) 1. 简述BAT公司在人工智能领域的主要应用。 2. 描述阿里巴巴的“双十一”购物节对电子商务行业的影响。 3. 腾讯的微信如何改变了人们的社交方式? 4. 百度在大数据领域有哪些主要的产品和服务? 五、讨论题(每题 5 分,共 4 题) 1. 讨论BAT公司在推动中国互联网行业发展中的作用和贡献。 2. 分析BAT公司在全球化进程中面临的挑战和机遇。 3. 探讨BAT公司在创新和技术研发方面的投入和成果。 4. 讨论BAT公司在社会责任和可持续发展方面的实践和影响。 答案 一、单项选择题答案 1. D 2. D 3. B 4. B 5. D 6. A 7. B 8. A 9. A 10. A 二、多项选择题答案 1. A, B, C 2. A, B, C 3. A, B 4. A, B 5. A, B, C 6. A, B 7. A, B 8. A, C 9. A 10. A 三、判断题答案 1. 对 2. 对 3. 对 4. 错 5. 对 6. 对 7. 对 8. 对 9. 对 10. 对 四、简答题答案 1. 百度在人工智能领域的主要应用包括自动驾驶技术、语音识别、图像识别等;阿里巴巴主要应用于智能推荐系统、智能客服、智能物流等;腾讯则在游戏AI、智能语音助手、智能医疗等领域有所布局。

北大青鸟:BAT大公司面试题

北大青鸟:BAT大公司面试题

BAT的牛人多,普通人也多,虽然他们不是每个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光会变得宽阔;代码要求更为严格,所以普通的程序员也会被逼变得更优秀;身边的牛人多,普通的程序员也会受到影响,提升的更快。

正好,小编今天看到一篇文章,是讲去阿里的面试经历,也分享给大家,看看自己离着【进】阿里还有多大的差距。

Activity▪说下Activity生命周期?▪Activity A 启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢?▪说下onSaveInstanceState()方法的作用? 何时会被调用?▪说下Activity的四种启动模式、应用场景?▪了解哪些Activity常用的标记位Flags?▪说下Activity跟window,view之间的关系?▪横竖屏切换的Activity生命周期变化?▪如何启动其他应用的Activity?▪Activity的启动过程?Fragment▪谈一谈Fragment的生命周期?与Activity生命周期的不同?▪谈谈Activity和Fragment的区别?▪Fragment中add与replace的区别(Fragment重叠)▪getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之间的区别?▪FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景Service▪谈一谈Service的生命周期?▪Service的两种启动方式?区别在哪?▪如何保证Service不被杀死?▪能否在Service开启耗时操作?怎么做?▪用过哪些系统Service ?▪了解ActivityManagerService吗?发挥什么作用Broadcast Receiver▪广播有几种形式? 都有什么特点?▪广播的两种注册方式?▪广播发送和接收的原理了解吗?(Binder机制、AMS)ContentProvider▪ContentProvider了解多少?▪ContentProvider的权限管理?数据存储▪描述一下Android数据持久存储方式?▪SharedPreferences的应用场景?注意事项?▪了解SQLite中的事务操作吗?是如何做的▪使用SQLite做批量操作有什么好的方法吗?▪如何删除SQLite中表的个别字段?▪使用SQLite时会有哪些优化操作?IPC(重点)▪Android中进程和线程的关系?区别?▪如何开启多进程?应用是否可以开启N个进程?▪为何需要IPC?多进程通信可能会出现的问题?▪Android中IPC方式、各种方式优缺点,为什么选择Binder?▪Binder机制的作用和原理?▪Binder框架中ServiceManager的作用?▪Bunder传递对象为什么需要序列化?Serialzable和Parcelable的区别?▪讲讲AIDL?原理是什么?如何优化多模块都使用AIDL的情况?View▪讲下View的绘制流程?▪MotionEvent是什么?包含几种事件?什么条件下会产生?▪描述一下View事件传递分发机制?▪如何解决View的事件冲突?举个开发中遇到的例子?▪scrollTo()和scollBy()的区别?▪Scroller是怎么实现View的弹性滑动?▪invalidate()和postInvalidate()的区别?▪SurfaceView和View的区别?▪自定义View如何考虑机型适配?Handler▪谈谈消息机制Handler ? 作用?有哪些要素?流程是怎样的?▪一个线程能否创建多个Handler,Handler跟Looper之间的对应关系?▪软引用跟弱引用的区别▪为什么系统不建议在子线程访问UI▪Looper死循环为什么不会导致应用卡死▪使用Handler的postDealy后消息队列会有什么变化?▪可以在子线程直接new一个Handler吗?怎么做?▪Message可以如何创建?哪种效果更好?为什么?线程(重点)▪用过线程池吗?讲讲AsyncTask的原理▪线程池的几个参数的理解,四种线程池的使用场景▪直接在Activity中创建一个thread跟在service中创建一个thread之间的区别▪IntentService有什么用?▪线程池核心线程数一般定义多少,为什么?▪Thread、Looper、MessageQueue、Handler、Message每个类的功能以及这些类之间的关系▪线程池的好处、原理、类型?多线程是否一定会高效(优缺点)▪ThreadPoolExecutor的工作策略?▪什么是ANR ? 什么情况会出现ANR ?如何避免?在不看代码的情况下如何快速定位出现ANR问题所在?▪NR在四大组件的时间、场景▪多线程中,让你做一个单例,你会怎么做▪除了notify还有什么方式可以唤醒线程Bitmap▪Bitmap在decode的时候申请的内存如何复用、释放时机▪Bitmap使用需要注意哪些问题?Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收它?▪一张Bitmap所占内存以及内存占用的计算▪Android中缓存更新策略?▪LRU的原理?性能优化(重点)▪图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?▪内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?▪WebView的性能优化?▪Bitmap如何处理大图,如一张30M的大图,如何预防OOM▪内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象▪内存泄露和内存溢出的区别?AS有什么工具可以检测内存泄露▪性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?▪性能优化如何分析systrace?▪强引用置为null,会不会被回收?▪ListView跟RecyclerView的区别(动画、刷新、缓存、数据绑定层、优化、各自的使用场景)▪ListView的adapter是什么adapter,如何复用?▪Java多线程引发的性能问题,怎么解决?▪性能优化如何分析systrace?JNI▪对JNI是否了解▪如何加载NDK库?如何在JNI中注册Native函数,有几种注册方法?▪java如何调用c、c++语言?▪JNI如何调用java代码?▪你用JNI来实现过什么功能?怎么实现的?(加密处理、影音方面、图形图像处理)设计模式▪你所知道的设计模式有哪些?▪谈谈MVC、MVP和MVVM,好在哪里,不好在哪里?▪如何理解生产者消费者模型?▪是否能从Android中举几个例子说说用到了什么设计模式?▪装饰模式和代理模式有哪些区别?▪实现单例模式有几种方法?懒汉式中双层锁的目的是什么?两次判空的目的又是什么?▪用到的一些开源框架,介绍一个看过源码的,内部实现过程。

最全BAT架构师130面试题(微服务、高并发、大数据、缓存等中间件)

最全BAT架构师130面试题(微服务、高并发、大数据、缓存等中间件)

最全BAT架构师130⾯试题(微服务、⾼并发、⼤数据、缓存等中间件)⼀、数据结构与算法基础1.· 说⼀下⼏种常见的排序算法和分别的复杂度。

2.· ⽤Java写⼀个冒泡排序算法3.· 描述⼀下链式存储结构。

4.· 如何遍历⼀棵⼆叉树?5.· 倒排⼀个LinkedList。

6.· ⽤Java写⼀个递归遍历⽬录下⾯的所有⽂件。

⼆、Java基础1.· 接⼝与抽象类的区别?2.· Java中的异常有哪⼏类?分别怎么使⽤?3.· 常⽤的集合类有哪些?⽐如List如何排序?4.· ArrayList和LinkedList内部的实现⼤致是怎样的?他们之间的区别和优缺点?5.· 内存溢出是怎么回事?请举⼀个例⼦?6.· ==和equals的区别?7.· hashCode⽅法的作⽤?8.· NIO是什么?适⽤于何种场景?9.· HashMap实现原理,如何保证HashMap的线程安全?10.· JVM内存结构,为什么需要GC?11.· NIO模型,select/epoll的区别,多路复⽤的原理12.· Java中⼀个字符占多少个字节,扩展再问int, long, double占多少字节13.· 创建⼀个类的实例都有哪些办法?14.· final/finally/finalize的区别?15.· Session/Cookie的区别?16.· String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?17.· Servlet的⽣命周期?18.· 如何⽤Java分配⼀段连续的1G的内存空间?需要注意些什么?19.· Java有⾃⼰的内存回收机制,但为什么还存在内存泄露的问题呢?20.· 什么是java序列化,如何实现java序列化?(写⼀个实例)?21.· String s = new String("abc");创建了⼏个 String Object?三、JVM1.· JVM堆的基本结构。

bat面试试题及答案

bat面试试题及答案

bat面试试题及答案BAT面试试题及答案一、选择题1. 在JavaScript中,以下哪个方法可以用来将字符串转换为小写?A. toUpperCase()B. toLowerCase()B. toFixed()D. toString()答案:B2. 在Python中,以下哪个是正确的字典(Dictionary)声明方式?A. dict = {"name": "Kimi", "age": 30}B. dict = ("name", "Kimi", "age", 30)C. dict = ["name": "Kimi", "age": 30]D. dict = dict("name", "Kimi", "age", 30)答案:A3. 在Java中,以下哪个关键字用于定义一个接口?A. classB. interfaceC. structD. enum答案:B二、简答题1. 请解释HTTP请求中的GET和POST方法的区别。

答案:GET方法通常用于请求服务器发送资源。

它是一个读取操作,不会产生服务器上的副作用。

GET请求可以被缓存、可以保留为浏览器历史、并且可以被收藏为书签。

而POST方法通常用于向服务器提交数据进行处理。

它常用于产生副作用的操作,如提交表单数据。

POST请求不会被缓存,也不会保留在浏览器历史中。

2. 请简述什么是SQL注入攻击,以及如何防止它。

答案:SQL注入攻击是一种攻击数据库的方法,通过在SQL查询中插入恶意的SQL代码,欺骗后端数据库执行非法的SQL命令。

为了防止SQL注入攻击,可以采取以下措施:使用参数化查询而不是字符串拼接来构建SQL语句;对用户输入进行验证和过滤,确保只接受有效数据;使用最小权限原则,限制数据库访问权限;定期更新和打补丁数据库系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

标准实用文案 文档 1、kafka的message包括哪些信息 一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成 header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性 body是由N个字节构成的一个消息体,包含了具体的key/value消息 2、怎么查看kafka的offset 0.9版本以上,可以用最新的Consumer client 客户端,有consumer.seekToEnd() / consumer.position() 可以用于得到当前最新的offset:

3、hadoop的shuffle过程 一、Map端的shuffle Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,而不是HDFS。每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill。 在spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据。接着运行combiner(如果设置了的话),combiner的本质也是一个Reducer,其目的是对将要写入到磁盘上的文件先进行一次处理,这样,写入到磁盘的数据量就会减少。最后标准实用文案 文档 将数据写到本地磁盘产生spill文件(spill文件保存在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)。

最后,每个Map任务可能产生多个spill文件,在每个Map任务完成前,会通过多路归并算法将这些spill文件归并成一个文件。至此,Map的shuffle过程就结束了。

二、Reduce端的shuffle Reduce端的shuffle主要包括三个阶段,copy、sort(merge)和reduce。 首先要将Map端产生的输出文件拷贝到Reduce端,但每个Reducer如何知道自己应该处理哪些数据呢?因为Map端进行partition的时候,实际上就相当于指定了每个Reducer要处理的数据(partition就对应了Reducer),所以Reducer在拷贝数据的时候只需拷贝与自己对应的partition中的数据即可。每个Reducer会处理一个或者多个partition,但需要先将自己对应的partition中的数据从每个Map的输出结果中拷贝过来。 接下来就是sort阶段,也成为merge阶段,因为这个阶段的主要工作是执行了归并排序。从Map端拷贝到Reduce端的数据都是有序的,所以很适合归并排序。最终在Reduce端生成一个较大的文件作为Reduce的输入。

最后就是Reduce过程了,在这个过程中产生了最终的输出结果,并将其写到HDFS上。

4、spark集群运算的模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalo标准实用文案 文档 ne 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。 standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算 on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算

on cloud(集群模式):比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3

5、HDFS读写数据的过程 读: 1、跟namenode通信查询元数据,找到文件块所在的datanode服务器 2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流 3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验) 4、客户端以packet为单位接收,现在本地缓存,然后写入目标文件 写: 1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在 2、namenode返回是否可以上传 3、client请求第一个 block该传输到哪些datanode服务器上 标准实用文案 文档 4、namenode返回3个datanode服务器ABC 5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端 6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答

7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。 6、RDD中reduceBykey与groupByKey哪个性能好,为什么 reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。 groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。同时如果数据量十分大,可能还会造成OutOfMemoryError。

通过以上对比可以发现在进行大量数据的reduce操作时候建议使用reduceByKey。不仅可以提高速度,还是可以防止使用groupByKey造成的内存溢出问题。

7、spark2.0的了解 标准实用文案

文档 更简单:ANSI SQL与更合理的API 速度更快:用Spark作为编译器 更智能:Structured Streaming

8、 rdd 怎么分区宽依赖和窄依赖 宽依赖:父RDD的分区被子RDD的多个分区使用 例如 groupByKey、reduceByKey、sortByKey等操作会产生宽依赖,会产生shuffle 窄依赖:父RDD的每个分区都只被子RDD的一个分区使用 例如map、filter、union等操作会产生窄依赖

9、spark streaming 读取kafka数据的两种方式 这两种方式分别是: Receiver-base 使用Kafka的高层次Consumer API来实现。receiver从Kafka中获取的数据都存储在Spark Executor的内存中,然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用Spark Streaming的预写日志机制(Write Ahead Log,WAL)。该机制会同步地将接收到的Kafka数据写入分布式文件系统(比如HDFS)上的预写日志中。所以,即使底层节点出现了失败,也可以使用预写日志中的数据进行恢复。 Direct Spark1.3中引入Direct方式,用来替代掉使用Receiver接收数据,这种方式会周期性地查询Kafka,获得每个topic+partition的最新的offset,从而定义每个batch的offset标准实用文案 文档 的范围。当处理数据的job启动时,就会使用Kafka的简单consumer api来获取Kafka指定offset范围的数据。 10、kafka的数据存在内存还是磁盘 Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。 而且Linux对于磁盘的读写优化也比较多,包括read-ahead和write-behind,磁盘缓存等。如果在内存做这些操作的时候,一个是JAVA对象的内存开销很大,另一个是随着堆内存数据的增多,JAVA的GC时间会变得很长,使用磁盘操作有以下几个好处: 磁盘缓存由Linux系统维护,减少了程序员的不少工作。 磁盘顺序读写速度超过内存随机读写。 JVM的GC效率低,内存占用大。使用磁盘可以避免这一问题。 系统冷启动后,磁盘缓存依然可用。 11、怎么解决kafka的数据丢失 producer端: 宏观上看保证数据的可靠安全性,肯定是依据分区数做好数据备份,设立副本数。 broker端: topic设置多分区,分区自适应所在机器,为了让各分区均匀分布在所在的broker中,分区数要大于broker数。 分区是kafka进行并行读写的单位,是提升kafka速度的关键。 Consumer端 consumer端丢失消息的情形比较简单:如果在消息处理完成前就提交了offset,那么就有

相关文档
最新文档