Dubbo

阿里面试Java必问题360道解析(JVM+mysql+Netty+spring+框架)

你。 提交于 2020-10-19 14:11:31
前言 正逢金三银四,很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。针对大家的这些问题,我整理了 jvm+开源框架+netty+spring+MySQL+dubbo+netty+mybatis的大厂真题和解答。看完之后希望对你有一定的帮助。 所有的资料都整理一个文档里面了,文中没有将所有答案都列举出来,需要资料私信小编:【架构资料】 JVM: 内存模型以及分区,需要详细到每个区放什么。 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。 对象创建方法,对象的内存分配,对象的访问定位。 GC 的两种判定方法: SafePoint 是什么 GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用 在什么地方,如果让你优化收集方法,有什么思路? GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。 Minor GC 与 Full GC 分别在什么时候发生? 几种常用的内存调试工具:jmap、jstack、jconsole、jhat 类加载的几个过程: JVM 内存分哪几个区,每个区的作用是什么? 如和判断一个对象是否存活?(或者 GC 对象的判定方法) 简述 java 垃圾回收机制?

面试大厂必看!凭借这份Java面试题,成功拿到阿里offer!

我们两清 提交于 2020-10-18 12:44:22
前言 一位小伙伴经过一个半月的面试准备,成功拿下了阿里的offer,小编把他遇到的面试题分享出来,希望能对即将面试的小伙伴有所帮助。 一、自我介绍 简单的介绍一下自己的工作经历与职责,在校或者在工作中主要的工作内容,主要负责的内容; 介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节; 二、Java多线程 线程池的原理,为什么要创建线程池?创建线程池的方式; 线程的生命周期,什么时候会出现僵死进程; 说说线程安全问题,什么实现线程安全,如何实现线程安全; 创建线程池有哪几个核心参数? 如何合理配置线程池的大小? volatile、ThreadLocal的使用场景和原理; ThreadLocal什么时候会出现OOM的情况?为什么? synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性; 三、JVM相关 JVM内存模型,GC机制和原理; GC分哪两种,Minor GC 和Full GC有什么区别?什么时候会触发Full GC?分别采用什么算法? JVM里的有几种classloader,为什么会有多种? 什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处; 什么情况下我们需要破坏双亲委派模型; 常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值? JVM虚拟机内存划分、类加载器

金九只剩银十,分享PDF离线版,GitHub上标星75k+超牛的《Java面试突击版》

馋奶兔 提交于 2020-10-18 07:41:08
前言 不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1.自我介绍。(你可千万这样介绍: “我叫某某,性别,来自哪里,学校是哪个,自己爱干什么”,记住:多说点简历_上没有的,多说点自己哪里比别人强! ) 2.自己面试中可能涉及哪些知识点、哪些知识点是重点。 3.面试中哪些问题会被经常问到、面试中自己该如何回答。(强烈不推荐背题, 第一: 通过背这种方式你能记住多少?能记住多久? 第二: 背题的方式的学习很难坚持下去! ) 4.自己的简历该如何写。 "80%的offer掌握在20%的人手中"这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。 另外,大家要明确的很重要的几点是: 1.写在简历上的东西一定要慎重,这可能是面试官大量提问的地方; 2.大部分应届生找工作的硬伤是没有工作经验或实习经历; 3.将自己的项目经历完美的展示出来非常重要。

最新!Dubbo 远程代码执行漏洞通告,速度升级

百般思念 提交于 2020-10-18 07:40:34
0x01 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行的风险通告,该漏洞编号为 CVE-2020-1948,漏洞等级: 高危 。 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Apache Dubbo Provider 存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 该漏洞的相关技术细节已公开。 对此,360CERT建议广大用户及时安装最新补丁,做好资产自查以及预防工作,以免遭受黑客攻击。 0x02 风 险等级 360CERT对该漏洞的评定结果如下 0x03 漏洞详情 Apache Dubbo Provider 存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 0x04 影响版本 [Dubbo 2.7.0 – 2.7.6](http://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247492659&idx=2&sn

2020年的Java程序员如何才能做到不接私活也能月薪40k?

流过昼夜 提交于 2020-10-17 13:49:48
接私活 对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。 但是我是不建议接私活的,接私活会浪费自己在一大部分的精力, 就算不接私活,利用好工作后的八小时也能比别人强,月薪也绝对不会比那些接私活的少。 把有限的时间花在提升自己的能力上,技术深度,技术广度,或者多阅读书籍,丰富自己,这样有可能比做外包收益大。 回想自己做开发的这八年多,我获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,我都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年 第二年的时候我就在想,自己还要这样吗? 当然是否定的,不可能的,一年的经验自己完全可以入行了,是时候该学习怎么进行需求分析,怎么设计数据库,怎么写各类文档,怎么写更好的代码? 所以说:一个人在一家公司呆久了,千万不要模式化,一直待着舒适区,因为当你一旦离开这家公司,找工作的时候就会很容易碰壁,在这里:我建议大家一定要提前计划着去学习 ... 我在这里给那些想达到这个高度甚至想往架构师发展的程序员提供一份进阶路线图

阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo

删除回忆录丶 提交于 2020-10-17 09:54:36
微服务 软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。 什么是微服务架构 微服务架构优势 独立部署,由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。 技术选型灵活微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,当需要对技术栈进行升级时所面临的风险较低,甚至完全重构一个微服务也是可行的。 容错:当某个组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。 扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。 高并发 1、应用缓存 2、HTTP缓存 3、多级缓存 4、池化 5、步并发 6、扩容 7、队列 Dubbo 1、服务集群

聊聊dubbo-go的roundRobinLoadBalance

会有一股神秘感。 提交于 2020-10-17 08:46:46
序 本文主要研究一下dubbo-go的roundRobinLoadBalance roundRobinLoadBalance dubbo-go-v1.4.2/cluster/loadbalance/round_robin.go const ( // RoundRobin ... RoundRobin = "roundrobin" // COMPLETE ... COMPLETE = 0 // UPDATING ... UPDATING = 1 ) var ( methodWeightMap sync.Map // [string]invokers state = int32(COMPLETE) // update lock acquired ? recyclePeriod = 60 * time.Second.Nanoseconds() ) func init() { extension.SetLoadbalance(RoundRobin, NewRoundRobinLoadBalance) } type roundRobinLoadBalance struct{} // NewRoundRobinLoadBalance ... func NewRoundRobinLoadBalance() cluster.LoadBalance { return

面试官:这道线程池场景题回答一下?想套路我,还不行

北城以北 提交于 2020-10-17 04:28:04
引言 一道面试题开始~~面试官:"假设我们有一个线程池,核心线程数为10,最大线程数也为20,任务队列为100。现在来了100个任务,线程池里现在有几个线程运行?"粉丝豪:"应该是10吧。"面试官:"你确定?"粉丝豪:"确定啊,就是10…"于是乎,粉丝豪就回去等通知了~ 此题的陷阱,大家如果看出来了,本文就不用看了!其实这道题正确的答案是"不一定!"因为并没指明是哪一种线程池机制,带着我们的疑问继续往下看! ps:不要纠结这题是不是咬文嚼字,现在人多如米,题目就是这样坑~ 正文 先进队列,到最大值,再起线程 这种情况是大家最容易想到的情况,因为JDK中的线程池,也就是ThreadPoolExecutor就是这种机制的! OK,我们先来看一下ThreadPoolExecutor的execute方法,如下图所示 看到三个红框了吧(其实源码里有解释),对应的三步分别是 (1)判断当前活跃线程数是否小于corePoolSize,如果小于,则调用addWorker创建线程执行任务 (2)如果不小于corePoolSize,则将任务添加到workQueue队列 (3)如果放入workQueue失败,则创建线程执行任务,如果这时创建线程失败(当前线程数不小于maximumPoolSize时),就会调用reject(内部调用handler)拒绝接受任务。 用一张图来解释如下 如图所示

SpringCloud与Dubbo的比较

元气小坏坏 提交于 2020-10-17 01:38:08
Dubbo 一、dubbo简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 现已发展成为Apache的顶级孵化开源项目,详见官网: http://dubbo.apache.org/en-us/ 二、dubbo组织架构图 官网的dubbo组织架构图 详细介绍 1、Registry:服务注册与发现中心,作为服务提供者和消费者注册与发现的中心。 2、Provider:服务提供者,在注册中心注册作为服务提供的一方,发布服务到服务注册中心。 3、Consumer:服务消费者,通过注册中心协调,订阅可用的已注册的服务。 4、Container:服务运行容器,独立的容器类似于tomcat/jboss的作用,作为服务运行的容器。 5、Monitor:dubbo的监控中心,用来显示接口暴露、注册情况,也可以看接口的调用明细,调用时间等。 三、dubbo的优势 单一应用架构,当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM)是关键。 垂直应用架构,当访问量逐渐增大

我在搜刮了全网的Java学习分享后,精选了这些最强干货!!

扶醉桌前 提交于 2020-10-15 05:20:20
内容包含:Spring boot、Spring cloud、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina、性能调优、高并发、tomcat 负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr 集群与应用、分布式实战、主从复制、高可用集群等。 有想获取以下干货视频资料的朋友:点赞+关注后,私信【Java干货】就可以了(一定要记得关注我,不然没办法回复陌生人私信) 学习路线图 坦克大战 干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货 来源: oschina 链接: https://my.oschina.net/u/4389867/blog/4650809