Kafka

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

本秂侑毒 提交于 2021-01-15 19:10:34
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

自古美人都是妖i 提交于 2021-01-15 15:35:35
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

Recap | TGIP-001: Pulsar Basics

♀尐吖头ヾ 提交于 2021-01-15 06:55:08
🎙️阅读本文需 8 分钟 上周日(2 月 9 日),Pulsar 开启了 2020 年度第一次直播,也是小 Pu 成长路上的第一次线上直播,我们在 zoom 和 B 站同时进行了直播,也有很多朋友发弹幕和留言给我们,感谢各位的捧场! Pulsar 的第一场线上直播,请来了 StreamNative 的 CEO 郭斯杰大佬,为我们带来了一场关于 「Pulsar Basics」 的分享。 在正式进入内容前,郭斯杰也为大家介绍了什么是 TGIP (Thank God It's Pulsar), 类似可以参考 👇🏻Thank God It's Friday。 https://en.wikipedia.org/wiki/Thank_God_It%27s_Friday 同时更新了 Pulsar 的近况,主要是以下两个: Namespace level offloader https://github.com/apache/pulsar/pull/6183 Supports evenly distribute topics count when splits bundle https://github.com/apache/pulsar/pull/6241 后续大家还想了解关于 Pulsar 的任何问题,都可以去下边这个 repo 下提 issue,没准哪天你的提问就扩展为一期专门的直播啦! 🙋

一个爬虫工程师的成长之路

折月煮酒 提交于 2021-01-15 06:21:39
大数据流行的今天,网络爬虫成为了获取数据的一个重要手腕。但要学习好爬虫并没有那么简单。由于学习点、学习方向等实在是太多了,而且它涉及到计算机网络、后端编程、前端开发、App 开发与逆向、网络安全、数据库、自动化运维、机器学习、数据分析等各个方向的内容,它像一张大网一样,把如今一些主流的技术栈都囊括在内。正由于设计内容的多样性,需要学习的东西也变得十分零散和杂乱。很多初学者找不到具体的学习方向。学习过程中遇到反爬、JS渲染等问题,也不知道该如何处理。基于这些年的爬虫经验,梳理了一下作为一个初学者,需要掌握的内容。 语言的选择 C语言历史悠久,Java横行当下,大多初学者可能在大学都接触过这两门语言。但他们都有缺点,C语言学习难度大,Java太复杂,效率也有点底,Python则刚刚好。所以,本文所讲内容均以Python为开发语言。 初学爬虫 一般的网站,常常不带任何反爬措施。比方某某博客站点,我们要爬全站的话就顺着列表页爬到文章页,再把文章的时间、作者、正文等信息爬下来就能够了。 那代码怎样写呢?用 Python 的 requests 等库就够了,写一个根本的逻辑,顺着把一篇篇文章的源码获取下来,解析的话用 XPath、BeautifulSoup、PyQuery 或者正则表达式,或者粗暴的字符串匹配把想要的内容抠出来,再加个文本写入存下来就完事了。 代码很简单,就几个办法调用

如何协助企业IT架构转型

旧街凉风 提交于 2021-01-14 02:37:10
企业IT基础架构的重新平台化是不小的任务,重新平台化通常是由一组不断变化的关键业务驱动因素引发的,简而言之,就是目前支持企业业务的平台不能再处理和推动业务发展所需的工作负载。 数字化转型的核心是数据,数据已经成为商业中最有价值的货币。由于格式不兼容、传统数据库的局限性以及无法灵活地合并来自多个来源的数据,企业长期以来一直受到其使用数据的困扰,而新技术则可以解决这一困境。 改善软件部署模式是消除数据使用障碍的一个主要方面,更高的“数据灵活性”是需要更灵活的数据库和更具可扩展性的实时流式传输平台。目前想要为企业提供灵活的实时“数据结构”需要至少七种基础技术的相互结合。 与原先技术不同,这七种技术能够扩展以满足很多用户和用例的需求,对于企业而言,能够实现更快、更明智的决策并创造更好的用户体验。 1. NoSQL数据库 RDBMS在数据库市场上占据了近30年的主导地位。但是,面对数据量的不断增长以及数据处理速度的加快,传统关系数据库已经显示出不足。NoSQL数据库由于其速度和扩展能力而渐渐崭露头角。就文档数据库而言,从软件工程的角度提供了一个更简单的模型。这种更简单的开发模式可加快产品上市速度,并帮助企业更快响应客户和内部用户的需求。 2.实时流媒体平台 实时响应客户对客户体验至关重要。在过去的10年中,面向消费者的行业经历了巨大的破坏,这与公司对用户实时作出反应的能力不无关系。

【用例设计】接口用例设计

这一生的挚爱 提交于 2021-01-13 11:53:41
在接口测试过程中,用例设计是关键中的关键,需要重点关注的一些维度 接口测试 什么是接口 接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,所谓的接口是模块与模块之间的一种连接 接口测试 上图为一个典型的接口,一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑 接口测试的用例设计,主要从输入和接口处理两方面考虑: 针对输入,可按照参数类型进行设计 针对接口处理,可按照逻辑进行用例设计 针对输出,可根据结果进行分析设计 典型问题 接口测试经常遇到的bug和问题,如下: 传入参数处理不当,导致程序crash 类型溢出,导致数据读出和写入不一致 因对象权限未进行校验,可以访问其他用户敏感信息 状态处理不当,导致逻辑出现错乱 逻辑校验不完善,可利用漏洞获取非正当利益等 用例设计 前面说明什么是接口以及什么是接口测试,接下来详细看看如何才能更好的进行接口用例设计 一、参数校验 对于接口来说,输入就是入参。常见参数类型有: 数值型(int、long、float、double等) 字符串类型 数组或链表 结构体 1.1 数值型 数值型参数主要考虑的设计思路 1.1.1 等价类 取值范围内 取值范围外 1.1.2 边界值 取值范围边界(边界最小、最大、边界最小-1、边界最大+1等) 数据类型边界

springboot 集成 vertx-kafka-client

白昼怎懂夜的黑 提交于 2021-01-13 11:02:24
为什么尝试做这个集成 vertx是一套封装了netty的异步事件驱动的框架,netty采用的线程模型可以高效处理某些情况下的网络通讯,然而这套框架需要程序员使用函数编程的方式,不是传统的方式。本项目主要是为了构建一个框架。熟悉springboot编程的程序员只需要通过注解或者接口编程的式就可以使用到 vertx-kafka-client。 项目依赖 集成demo采用的依赖如下,主要是spring-boot-starter-web和vertx-kafka-client。 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->

python使用kafka收发消息

帅比萌擦擦* 提交于 2021-01-13 07:32:14
简介 kafka是最近几年很流行的消息队列中间件。在大数据以及后端服务领域有很广泛的应用。废话不多说,接下来直接上代码介绍python如何向kafka发送数据以及订阅数据。 消息发布 Kafka的消息是 " 发布--订阅" 模式的。 接下来先介绍向kakfa发布消息。先安装python的kafka连接模块。 pip install kafka-python . import time from kafka import KafkaProducer class KafkaMsgProducer: def __init__(self, server): self._server = server self.producer = None def connect(self): if self.producer is None: producer = KafkaProducer(bootstrap_servers=self._server) self.producer = producer def close(self): if self.producer is not None: self.producer.close() self.producer = None def send(self, topic, msg): if self.producer is not None: if

浅谈:分布式事务

妖精的绣舞 提交于 2021-01-12 20:04:08
在如今的分布式盛行的年代,分布式事务永远都是绕不开的一个话题,今天就谈谈分布式事务相关的一致性与实战解决方案。 一、为什么需要分布式事务 由于近十年互联网的发展非常迅速,很多网站的访问量越来越大,集中式环境已经不能满足业务的需要了,只能按照业务为单位进行数据拆分(包含:垂直拆分与水平拆分),以及按照业务为单位提供服务,从早期的集中式转变为面向服务加构的分布式应用环境。 举一个经典的例子,阿里的淘宝网站随着访问量越来越大,只能按照商品、订单、用户、店铺等业务为单位进行数据库拆分,以及按照业务为单位提供服务接口。 这个时候,为了完成一个简单的业务功能,比如:购买商品后扣款,有可能需要横跨多个服务,涉及用户订单、商品库存、支付等多个数据库,而这些操作又需要再同一个事务中完成,这就涉及到了分布式事务。 本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。 二、分布式的一致性理论 最早加州大学伯克利分校Eric Brewer教授提出一个分布式系统特性的CAP理论。 1、CAP理论的不可能三角 (1)一致性(Consistency) (2)可用性(Availability) (3)分区容错性(Partition tolerance) 在分布式系统中,是不存在同时满足一致性Consistency、可用性Availability和分区容错性Partition Tolerance三者的。

全链路压测探索实践之路

℡╲_俬逩灬. 提交于 2021-01-12 18:05:31
去年双十一,为了应对零点的峰值流量冲击,我们在八月下旬启动了全链路压测第一次实践。由于从零开始,因此单独搭建了一套和生产1:1的环境,2个月的时间,光环境成本就高达几百万。 经过双十一,压测团队从中汲取了不少的经验和教训。双十一之后,在CTO的指导下和支持下,由基架和性能测试团队快速的投入了全链路压测平台的研发当中。 并且趁着核心系统重构,快速的接入落地,对后续的系统稳定性保障工作,迈出了坚定地一步。 流程导图 梳理阶段 1、系统服务梳理 全链路压测是一个很复杂的工程,其中涉及到多个服务。对整个业务系统进行梳理,确认流量传递的上下游和范围,是首先要做的事情。 2、核心链路梳理 什么是核心链路?现在来看,依然是一个艰难的选择。压测团队在梳理核心链路时,主要从如下几方面来评估: 1)是否是高频访问业务; 2)是否是强依赖的核心环节; 3)是否直接影响生产的交易业务; 4)参考生产实际的QPS指标为维度; 3、外部依赖梳理 确定核心链路后,要对其外部依赖进行进行梳理(比如第三方支付)。由于全链路压测在生产环境进行,因此需要对外部依赖进行mock处理,避免对生产服务造成影响。 4、中间件梳理 为了避免压测流量对生产造成影响,产生脏数据,需要对整个流量传递过程中涉及的中间件进行梳理,让压测流量透传落影子库。 压测流量模拟在请求网关接口时候在header中带上:x-infr-flowtype