Kafka

十年电商大厂面试官总结100道大厂高频面试题:Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件

江枫思渺然 提交于 2020-12-17 15:26:29
从业十多年,我从一位向往大厂的面试者成为了一个大厂面试官,身边很多从事Java 开发的朋友都不时咨询如何才能进大厂。的确,进大厂对于大多数人来说,绝不只是谈资,而是一种技术追求。像阿里、腾讯、字节这样的大厂,技术氛围和技术规范都明显优于体量较小的公司,业务场景也更加丰富、更具挑战性。 在大厂锻炼几年,可以更好地提升个人能力,对以后的职业规划也有更多选择。 话虽如此,要拿到大厂offer并不容易。简历投递如同大浪淘沙,面试过程也是竞争激烈。特殊时期大厂需求降低,要求反而更高。没有十足准备,很难通过层层筛选。不少Java人的问题并不是技术功底不过关,而是没有形成系统、全面的知识体系,总是被面试官问得哑口无言。 结合自己多年电商大厂面试官的经历,我将这些年常问的知识点从头梳理,整理成100道电商大厂核心面试题,涵盖了 大厂必考点、高频点和涨薪点 ,相信对大家准备面试会有一定帮助,也能解决一部分开发人在日常项目中遇到的问题。 这些点一共分成 5 大类,分别是: Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件 。我把关于这些问题的拆解与思考,整理成一个 pdf,限于篇幅,这里就不一一列出了。需要的同学可以文末领取,希望能从中有所启发、收获。 这里先罗列出近三年部分技术考核点,具体有: 1 Dubbo 1.1 服务调用超时问题怎么解决? 1.2

总结:Spring boot之@EnableAutoConfiguration

你说的曾经没有我的故事 提交于 2020-12-17 13:17:26
一、@EnableAutoConfiguration的作用 简单点说就是Spring Boot根据依赖中的jar包,自动选择 实例化 某些配置,配置类必须有@Configuration注解。 说白了,还是实例化对象,只是实例化的是非main类之外的包。 另外,我们也可以按照自动装配的规范自己定义装配的类。 二、@EnableAutoConfiguration和 @Configuration 的区别 @Configuration:表示作用的类是个配置类。我们平时也会写配置类,比如我们系统中的DataSourceConfig类,但是由于这个类是在Starter对应的子目录下,会自动加载,所以 @EnableAutoConfiguration就作用不到了。 @EnableAutoConfiguration:是一个加载Starter目录包之外的 需要Spring自动生成bean对象(是否需要的依据是"META-INF/spring.factories"中org.springframework.boot.autoconfigure.EnableAutoConfiguration后面是有能找到那个bean) 的带有@ Configuration注解的类。 三、@EnableAutoConfiguration案例 1、Kafka自动装配 我们会发现,当我们在application

喧哗的背后:Serverless 的概念及挑战

我是研究僧i 提交于 2020-12-17 04:22:14
作者 | 许晓斌 阿里云高级技术专家,目前负责阿里集团 Serverless 研发运维平台建设,《Maven 实战》作者,曾经是 Maven 中央仓库的维护者。 **导读:**本文作者作为阿里集团 Serverless 研发运维平台负责人,从应用架构的角度去分析 Serverless 为何会让那么多人着迷,它的核心概念究竟是什么,并总结了一些落地 Serverless 必然会面临的问题。 前言 我曾在 《Serverless 的喧哗与骚动》 一文中对 Serverless 今天在行业中所处的状态做了一个比喻,这个比喻是这么说的: Serverless is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it. 虽然距离写那篇文章已经过去了半年的时间,但是这种状态在我看来其实没有发生太大的变化,有很多的一线研发或者管理者对 Serverless 技术的理解是非常片面的,有些甚至是错误的。如果缺乏对应用架构演进的理解,缺乏对于云基础设施能力的理解,缺乏对风险的判断,盲目的上新技术可能不仅无法兑现业务价值,浪费精力

记一次 Kafka Producer 性能调优实战

旧时模样 提交于 2020-12-17 01:28:14
最近,遇到某个集群的生产端发送延迟特别高,而且吞吐量上不去,检查集群负载却很低,且集群机器配置非常好,网络带宽也很大,于是使用 Kafka 压测脚本进行了压测。 昨天凌晨,在生产环境进行实战调优,经过不断参数改动,现将生产者相关参数设置为以下配置: linger.ms=50 batch.size=524288 compression.type=lz4 acks=1(用户要求消息至少要发送到分区 leader) max.request.size=5242880 buffer.memory=268435456 在生产环境的一台服务器上,使用以上参数对集群进行生产发送性能压测: 从上图可以看到,使用平均 4k 大小的消息体对集群进行压测, 单个 Producer 平均吞吐量达到 2000MB/s,50w/s+ ! 作为对比,我还是使用同一台服务器,将调优参数去掉,再压一遍: 可以看到,最高的吞吐量也不过 500M/s,最低已经来到 2M/s 了。 虽然说实际客户端环境比压测环境复杂很多,但是使用压测工具已经能够证明,该集群的负载目前现在还远远没有达到瓶颈,且生产端还有待优化。 以上参数调优思想是: 1、buffer.memory=268435456 由于发送端发送频率非常快,加上由于 Spark 客户端频繁断开连接导致生产端 Sender 线程发送延迟增高,这就会造成客户端发送速率 >

解锁Redis锁的正确姿势

北城以北 提交于 2020-12-16 16:04:04
redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为。这个时候我们就要用到锁。锁的方式有好几种,php不能在内存中用锁,不能使用zookeeper加锁,使用数据库做锁又消耗比较大,这个时候我们一般会选用redis做锁机制。 setnx 锁在redis中最简单的数据结构就是string。最早的时候,上锁的操作一般使用setnx,这个命令是当:lock不存在的时候set一个val,或许你还会记得使用expire来增加锁的过期,解锁操作就是使用del命令,伪代码如下: 1if (Redis::setnx("my:lock", 1)) { 2 Redis::expire("my:lock", 10); 3 // ... do something 4 5 Redis::del("my:lock") 6} 这里其实是有问题的,问题就在于setnx和expire中间如果遇到crash等行为,可能这个lock就不会被释放了。于是进一步的优化方案可能是在lock中存储timestamp。判断timestamp的长短。 set 现在官方建议直接使用set来实现锁。我们可以使用set命令来替代setnx,就是下面这个样子 1if (Redis::set("my:lock", 1, "nx", "ex", 10)) { 2 ... do

2020年,阿里内推Java后端面试题,文末附面试福利。

穿精又带淫゛_ 提交于 2020-12-16 13:57:49
阿里一面题目: osi七层网络模型,五层网络模型,每次层分别有哪些协议 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制,双亲委派模型,以及为什么要实现双亲委派模型 虚拟机调优参数 拆箱装箱的原理 JVM垃圾回收算法 CMS G1 hashset和hashmap的区别,haspmap的底层实现put操作,扩容机制,currenthashmap如何解决线程安全,1.7版本以及1.8版本的不同 md5加密的原理 有多少种方法可以让线程阻塞,能说多少说多少 synchronized和reetrantlock锁 AQS同步器框架,countdowmlatch,cyclebarrier,semaphore,读写锁 阿里二面题目: B-Tree索引,myisam和innodb中索引的区别 BIO和NIO的应用场景 讲讲threadlocal 数据库隔离级别,每层级别分别用什么方法实现,三级封锁协议,共享锁排它锁,mvcc多版本并发控制协议,间隙锁 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?索引会不会使插入、删除作效率变低,怎么解决? 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么? 共享锁与非共享锁、一个事务锁住了一条数据,另一个事务能查吗? Spring bean的生命周期

程序员如何提升自己的格局?

↘锁芯ラ 提交于 2020-12-16 07:29:02
IT行业是一个公平公正的行业,任何人只要有实力、肯努力,就能达到一个不错的未来。 IT行业也是一个危机四伏的行业,这个行业竞争激烈,稍有松懈就会被时代所淘汰。 身为一个程序员,如果能够在这个行业站稳脚步,越行越远呢? 有许许多多的因素,但最重要的是我们的 格局 。 如何提升我们的格局呢?可以从如下几个方面切入。 1.以更高的维度审视技术 有许多程序员,尤其是初级程序员,仅仅满足于完成公司分配给自己的工作。他们偶尔使用到一些开源组件和框架,也仅仅是停留在使用层面。 比如Apache Kafka,初级程序员们或许只知道它是一个消息中间件,却完全不了解 Apache Kafka的优势劣势在哪里,底层原理是什么样子,架构是如何设计和演变,未来的发展方向是什么 。 2.学习大厂的宝贵经验 许多程序员身处传统IT企业,或是小型初创公司。他们所做的业务仅仅是功能上的实现,完全不会遇到诸如 “双十一”、“六一八”那样的大数据量,高并发量 挑战。 正是诸如此类的挑战性问题,才能促使程序员们的经验更丰富,技术更精进。 那么,如果并没有身处大型互联网公司,是不是就没有机会了呢? 当然不是,我们可以通过一些BAT大牛的技术分享,学习到这些大型项目的设计和优化经验。 3.尝试与技术大神交流 什么样的人算是技术大神呢?在这里举个栗子: Georges Saab Saab先生是现任Oracle

怎么做数据可视化大屏?从设计到上线,一般用这3类工具

狂风中的少年 提交于 2020-12-16 04:27:26
数据可视化大屏成为了这两年很火爆的一个需求。 一方面,不少甲方都想做这么酷炫的大屏,用于公司展厅、日常经营监控,还有些特殊行业如交通、运输、工厂制造,会做更高级的3D建模等。 另一方面,市面上可提供做大屏的技术、工具和厂商层出不穷,似乎能和数据搭上边的都能做大屏。 大屏真的像一些文章说的神乎其技吗,真的那么低门槛零成本? 如果是这样,我作为一个做技术,尤其是做了十几个大屏项目实施,也不会秃头了...... 先来说说几个误区。 误区一:网上看到的绝大部分大屏都是效果图 效果图和实际图最大的区别就是效果图都是静态的,实际实施时需要适配屏幕分辨率,比如字体能否自适应大小。一些动态展示如3D旋转以及图表空间和数据刷新的速率也无法看见,基本上实际图做出来会和效果图差那么一两成。 再者啊,这个效果图很多在线网站,图表插件都可以直接设计出,像我们在做项目前也需要美工帮出几版效果图,所以你无法通过效果图来判别厂商的专业度尤其是实施能力。 误区二:认为大屏仅是前端技术?NO! 数据从哪里来,是读业务数据库还是建立中间库,数据更新的频率要求是什么,数据质量有无问题还要先做底层数据处理? 硬件方面,需要明确大屏的尺寸、种类、驱动大屏的主机? 业务方面,大屏展示什么指标和维度,业务分析逻辑谁来支撑? 这些都是要考虑的。 误区三:大屏成本低,零代码实现?NO! 据我所知,一个大屏项目十几万是常有的事

带你读懂《Java并发编程》:第3章 助于线程安全的三剑客:final&valitale&线程封闭

依然范特西╮ 提交于 2020-12-14 22:23:25
点击上方 蓝字 关注我们 我们简要的 回顾前文: 《第1章 多线程安全性与风险》 介绍了并发编程, 在维护难度、性能以及活跃性三个方面,所带来的风险与优势 ; 《第2章 影响线程安全性的原子性和加锁机制》 介绍了并发编程核心概念 -- 线程安全性, 介绍了用同步的手段 ,来避免多个线程在同一时刻访问相同的数据 ; 今天分享的是《Java并发编程实战》第3章 -- “对象的共享”: 介绍用安全共享和发布对象的手段,来让多个线程能够安全的同事访问同一数据 。 开始前,我们先回顾下几个重要的基础知识: 缓存一致性 和 Java内存模型 。 现实计算机系统是存在缓存一致性问题的,见下图: 现实因素: 由于计算机存储设备与处理器的运算速度有个数量级的差距( 即便存储设备使用SSD,还是比处理器慢几个数量级 ),所以计算机系统不得不增加一层读写速度尽可能接近处理器速度的高速缓存Cache来作为内存和处理器之间的缓冲。 缓存一致性(Cache Coherence) :基于高速缓存的存储交互解决了处理器和内存的速度矛盾,但是引入了缓存一致性( 在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一个主内存(Main Memory),当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致 )。 Java内存模型(Java Memory Model,JMM)

大咖云集,一场技术盛宴等你来约!| 免费报名、周边豪礼

主宰稳场 提交于 2020-12-13 21:54:08
导语: 腾讯年度技术盛会 Techo Park 开发者大会将于12月19日在北京798艺术中心举行,本次大会旨在汇聚全球顶尖行业专家和技术爱好者,搭建一个开放、中立、活跃的技术交流平台。微服务作为云原生重要的技术领域,组委会专门设立了微服务分论坛,与大家分享微服务转型的全生命周期的技术解决方案和实践经验。 大会现场 除了技术大咖面对面交流外,还设立了有趣的游戏玩法和周边豪礼!下面由小Q妹为大家解锁下微服务分论坛的精彩内容和游戏玩法吧! 今年 Techo Park 开发者大会将设置1场主论坛,29场垂直技术分论坛以及多场独具特色的创新互动活动,来自国内外200多位技术大咖将现场为大家带来一场年度的技术嘉年华。 主论坛 在大咖云集的主论坛,腾讯高级执行副总裁、腾讯云与智慧产业事业群总裁汤道生、腾讯云副总裁王慧星、Linux基金会执行董事Jim Zemlin 、AWS Lambda 创始人&前总经理Tim Wagner,厦门大学博士生导师、国家“万人计划”青年拔尖人才纪荣嵘,腾讯杰出科学家、多媒体实验室总经理刘杉,腾讯云副总裁、腾讯会议负责人&多媒体实验室联合负责人吴祖榕,腾讯云安全总经理、腾讯安全云鼎实验室负责人董志强,腾讯云容器产品总经理邹辉、腾讯云数据库负责人林晓斌,以及微信小程序及云开发创始团队核心负责人、微信专家工程师林超,腾讯开源联盟主席单致豪等众多专家