精华内容
下载资源
问答
  • Java基础 1Java语言的三大特性 2.Java语言主要特性 3. JDK和JRE有什么区别 4.Java基本数据类型及其封装类 5.如果main方法被声明为private会怎样? 6.说明- -下public static void main(String argsQ])这段声明里每个...

    Java基础

    1Java语言的三大特性

    2.Java语言主要特性

    3. JDK和JRE有什么区别

    4.Java基本数据类型及其封装类

    5.如果main方法被声明为private会怎样?

    6.说明- -下public static void main(String argsQ])这段声明里每个关键字的作用

    7.==与equals的区别

    8.Object有哪些公用方法

    9.为什么Java里没有全局变量?

    10.while循环和do循环有什么不同?

    11.char型变量中能不能存储一个中文汉字?为什么?

    12.public, private, protected的区别, 继承方法与访问权限

    13.float f=3.4;是否正确?

    14.shorts1 = 1;s1 = s1 + 1;有错吗? shorts1 = 1;s1 += 1;有错吗

    15.8u和&:&的区别?

    16.IntegerCache

    17.Locale类是什么?

    18Java中final. finally. finalize的区别与用法

    19.hashCode0和equals0的区别

    20.深拷贝和浅拷贝的区别是什么?

    21Java中操作字符串都有哪些类?它们之间有什么区别?

    22.String str= "a"与String str=new String(“a”)-样吗?

    23.抽象类能使用final 修饰吗?

    24.static关键字5连问

    25.重载(Overload) 和重写(Override) 的区别。重载的方法能否根据返回类型进行区分?

    26.Java的四种引用

    27.Java中Comparator与Comparable有什么不同?

    28. Java序列化,反序列化?

    29.什么情况需要Java序列化?

    30.序列化的实现?

    31.如果某些数据不想序列化,如何处理?

    腾讯T4架构师:刷3遍以下面试题,你也能从小公司成功跳到大厂

    IO&NIO

    1.什么是I0流?

    2java中有几种类型的流?

    3.字节流和字符流哪个好?怎么选择?

    4.读取数据量大的文件时,速度会很慢,如何选择流?

    5.1O模型有几种?

    6.阻塞1O (blocking 10)

    7.非阻塞I/O (nonblocking 10)

    8.I/O多路复用模型(I0 multiplexing)

    9.信号驱动I/O模型

    10.异步/O(asynchronous 10)

    11.NIO与10的区别?

    12.NIO和IO适用场景

    13.NIO核心组件

    14.什么是channel

    15.Java NIO中最常用的通道实现?

    16.Buffer是什么?

    腾讯T4架构师:刷3遍以下面试题,你也能从小公司成功跳到大厂

    多线程面试题

    1.什么是进程?

    2.什么是线程?

    3.线程的实现方式?

    4.Thread类中的start0和run0方法有什么区别?

    5.线程NEW状态

    6.线程RUNNABLE状态

    7.线程的RUNNING状态

    8.线程的BLOCKED状态

    9.线程的TERMINATED状态

    10.线程状态转化图

    11.i——与System.out.printIn0的异常

    12.如何知道代码段被哪个线程调用?

    13.线程活动状态?

    14.sleep0方法

    15.如何优雅的设置睡民时间?

    16.停止线程

    17.interrupted和isInterrupted

    18.yield

    19.线程的优先级

    20.优先级继承特性

    21.谁跑的更快?

    22.线程种类

    23.守护线程的特点

    24.Java中典型的守护线程

    25.如何设置守护线程

    25Java虚拟机退出时Daemon线程中的finally块一定会执行?

    26.设置线程上下文类加载器

    27.join

    28.什么是synchronized?

    29.synchronized包括哪两个jvm重要的指令?

    30.synchronized关键字用法?

    31.synchronized锁的是什么?

    32.Java对象头

    还有很多,这里就不一一例举了

    腾讯T4架构师:刷3遍以下面试题,你也能从小公司成功跳到大厂

    JVM

    1JDK. JRE、 JVM关系?

    2.启动程序如何查看加载了哪些类,以及加载顺序? ’

    3. class字节码文件10个主要组成部分?

    4.画一下jvm内存结构图?

    5.程序计数器

    6Java虚拟机栈

    7.本地方法栈

    8Java堆

    9.方法区

    10.运行时常量池?

    11.什么时候抛出StackOverflowError?

    12.Java7和Java8在内存模型上有什么区别?

    13.程序员最关注的两个内存区域?

    14.直接内存是什么?

    15.除了哪个区域外,虚拟机内存其他运行时区域都会发生OutOfMeoryError?

    16.什么情况下会出现堆内存溢出?

    17如何实现一个堆内存溢出?

    18.空间什么情况下会抛出OutOfMemoryError?

    19.如何实现StrackOverflowError?

    20.如何设置直接内存容量?

    21.Java堆内存组成?

    22. Edem : from : to默认比例是?

    23.垃圾标记阶段?

    24.引用计数法?

    25.根搜索算法?

    26.JVM中三种常见的垃圾收集算法?

    27.标记-清除算法?

    28.复制算法?

    29.标记-整理算法?

    30.分代收集算法?

    31.垃圾收集器?

    32.Stop The World?

    最后

    以上分享的全部分布式技术专题+面试解析+相关的手写和学习的笔记pdf,高清完整版戳这里免费领取

    还有更多Java笔记分享如下:

    25.根搜索算法?

    26.JVM中三种常见的垃圾收集算法?

    27.标记-清除算法?

    28.复制算法?

    29.标记-整理算法?

    30.分代收集算法?

    31.垃圾收集器?

    32.Stop The World?

    最后

    以上分享的全部分布式技术专题+面试解析+相关的手写和学习的笔记pdf,高清完整版戳这里免费领取

    还有更多Java笔记分享如下:

    image

    展开全文
  • Java序列化 + 注解 专题 Java IO/NIO + 反射 专题 Java IO与 NIO的区别 字节与字符的区别 多路复用 信号驱动 异步同步 反射的作用 哪里会用到反射机制? 反射实现方式 Java反射类 Java异常处理专题 Java集合/...

    Linux 专题

    微服务专题

    • 微服务架构有哪些优势?
    • 微服务有哪些特点?
    • 设计微服务的最佳实践是什么?
    • 微服务架构如何运作?
    • 微服务架构的优缺点是什么?
    • 单片,SOA 和微服务架构有什么区别?
    • 在使用微服务架构时,您面临哪些挑战?
    • SOA 和微服务架构之间的主要区别是什么?
    • 什么是 REST / RESTful 以及它的用途是什么?
    • 什么是不同类型的微服务测试?

    Kafka 专题

    • Kafka 是什么
    • 消费者设计
    • 如何获取 topic 主题的列表
    • 生产者和消费者的命令行是什么?
    • 为什么需要消息系统,mysql 不能满足需求吗?
    • Zookeeper 对于 Kafka 的作用是什么?
    • Kafka 与传统 MQ 消息系统之间有三个关键区别
    • 讲一讲 kafka 的 ack的三种机制
    • kafka 的高可用机制是什么?
    • kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。
    • kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

    Elasticsearch 专题

    • Elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
    • Elasticsearch 的倒排索引是什么
    • Elasticsearch 是如何实现 master 选举的
    • 详细描述一下 Elasticsearch 搜索的过程?
    • Elasticsearch 是如何实现 Master 选举的?
    • 客户端在和集群连接时,如何选择特定的节点执行请求的?
    • 在并发情况下,Elasticsearch 如果保证读写一致?
    • Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
    • 对于 GC 方面,在使用 Elasticsearch 时要注意什么?
    • 如何监控 Elasticsearch 集群状态?

    算法专题

    • 二分查找
    • 冒泡排序算法
    • 插入排序算法
    • 快速排序算法
    • 希尔排序算法
    • 归并排序算法
    • 桶排序算法
    • 基数排序算法
    • 剪枝算法
    • 回溯算法
    • 最短路径算法
    • 最小生成树算法
    • AES
    • RSA
    • CRC
    • MD5

    数据结构专题

    • 栈(stack)
    • 队列(queue)
    • 链表(Link)
    • 散列表(Hash Table)
    • 排序二叉树
    • 前缀树
    • 红黑树
    • B-TREE
    • 位图

    Zookeeper 专题

    • 什么是Zookeeper?
    • Zookeeper 如何保证了分布式一致性特性?
    • ZooKeeper 提供了什么?
    • 了解ZAB 协议?
    • zookeeper 是如何保证事务的顺序一致性的?
    • zk 节点宕机如何处理?
    • zookeeper 负载均衡和 nginx 负载均衡区别
    • 分布式集群中为什么会有 Master?
    • Zookeeper 有哪几种几种部署模式?
    • 集群支持动态添加机器吗?
    • chubby 是什么,和 zookeeper 比你怎么看 ?
    • Zookeeper 的 java 客户端都有哪些?
    • ZAB 和 Paxos 算法的联系与区别?

    MyBatis 专题

    Dubbo 专题

    • 服务调用是阻塞的吗?
    • 一般使用什么注册中心?还有别的选择吗?
    • 服务上线怎么不影响旧版本?
    • 如何解决服务调用链过长的问题?
    • Dubbo 集群容错有几种方案?
    • Dubbo 服务降级,失败重试怎么做?
    • Dubbo Monitor 实现原理?
    • Dubbo 用到哪些设计模式?
    • Dubbo 支持分布式事务吗?
    • 说说核心的配置有哪些?
    • Dubbo 推荐用什么协议?
    • Dubbo SPI 和 Java SPI 区别?
    • 为什么要用 Dubbo?
    • Dubbo 的整体架构设计有哪些分层?
    • 默认使用的是什么通信框架,还有别的选择吗?

    RabbitMQ 专题

    Spring 专题

    SpringCloud 专题

    SpringBoot 专题

    MongoDB 专题

    • mongodb是什么?
    • mongodb有哪些特点?
    • NoSQL数据库有哪些类型?
    • MySQL与MongoDB之间最基本的差别是什么?
    • MongoDB成为最好NoSQL数据库的原因是什么?
    • 你怎么比较MongoDB、CouchDB及CouchBase?
    • 分析器在MongoDB中的作用是什么?
    • 如何执行事务/加锁?
    • MongoDB支持存储过程吗?如果支持的话,怎么用?

    Memcached 专题

    • Memcached 是什么,有什么作用?
    • Memcached 最大的优势是什么?
    • Memcached 服务在企业集群架构中有哪些应用场景?
    • Memcached 服务分布式集群如何实现?
    • Memcached 服务特点及工作原理是什么?
    • 简述 Memcached 内存管理机制原理?
    • Memcached 是怎么工作的?
    • Memcached 如何实现冗余机制?
    • Memcached 如何处理容错的?
    • Memcached 的多线程是什么?如何使用它们?
    • 如何实现集群中的 Session 共享存储?
    • Memcached 与 Redis 的区别

    Redis 专题

    • 什么是 Redis?
    • 使用 Redis 有哪些好处?
    • Redis 相比 Memcached 有哪些优势?
    • Redis 是单进程单线程的?
    • Redis持久化机制
    • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
    • Redis的数据类型,以及每种数据类型的使用场景
    • Redis的过期策略以及内存淘汰机制
    • Redis 常见性能问题和解决方案?
    • 为什么Redis的操作是原子性的,怎么保证原子性的?
    • Redis 的持久化机制是什么?各自的优缺点?
    • Redis 过期键的删除策略?
    • Redis 的回收策略(淘汰策略)?
    • Redis 的同步机制了解么?
    • 是否使用过 Redis 集群,集群的原理是什么?

    MySQL 专题

    • 数据库引擎有哪些
    • 数据库的三范式是什么
    • 常见索引原则有哪些
    • 什么是内联接、左外联接、右外联接?
    • 并发事务带来哪些问题?
    • 事务隔离级别有哪些?MySQL的默认隔离级别是?
    • 大表如何优化?
    • MySQL 中有哪几种锁?
    • MySQL 中有哪些不同的表格?
    • 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
    • 主键和候选键有什么区别?
    • 列对比运算符是什么?
    • MySQL 支持事务吗?
    • 索引的底层实现原理和优化

    JVM 专题

    • 怎么获取 Java 程序使用的内存?堆使用的百分比?
    • 你能保证 GC 执行吗?
    • 解释 Java 堆空间及 GC?
    • JRE、JDK、JVM 及 JIT 之间有什么不同?
    • 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
    • java中会存在内存泄漏吗,请简单描述。
    • Java 中堆和栈有什么区别?
    • 描述一下 JVM 加载 class 文件的原理机制
    • GC 是什么?为什么要有 GC?
    • 讲讲JVM的新生代、老年代、永久代、
    • JVM双亲委派了解过吗?
    • JVM的永久代中会发生垃圾回收么
    • 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

    Java并发专题

    • 简述一下你对线程池的理解
    • Java中实现多线程有几种方法
    • 如何停止一个正在运行的线程
    • volatile关键字的作用?可以保证有序性吗?
    • SynchronizedMap和ConcurrentHashMap有什么区别?
    • 说一说自己对于 synchronized 关键字的了解
    • 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
    • 什么是线程安全?Vector是一个线程安全类吗?
    • 讲一下乐观锁、悲观锁、自旋锁
    • 死锁与活锁的区别,死锁与饥饿的区别?
    • 线程与进程的区别?
    • 什么是多线程中的上下文切换?

    Java序列化 + 注解 专题

    Java IO/NIO + 反射 专题

    • Java IO与 NIO的区别
    • 字节流与字符流的区别
    • 多路复用
    • 信号驱动
    • 异步同步
    • 反射的作用
    • 哪里会用到反射机制?
    • 反射实现方式
    • Java反射类

    Java异常处理专题

    Java集合/泛型专题

    • ArrayList和linkedList的区别
    • HashMap和HashTable的区别
    • Array与ArrayList有什么不一样?
    • 说说List,Set,Map三者的区别
    • 什么是Set集合
    • Vector( 数组实现、 线程同步)
    • 说说LinkList(链表)
    • HashMap(数组+链表+红黑树)
    • HashTable(线程安全)
    • 类型通配符?
    • 泛型类
    • 什么是TreeSet(二叉树)

    最后

    即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

    资料领取方式:蓝色传送门

    我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
    一共有20个知识点专题,分别是:

    Dubbo面试专题

    JVM面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    Java并发面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    Kafka面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    MongDB面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    MyBatis面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    MySQL面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    Netty面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    RabbitMQ面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    Redis面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    Spring Cloud面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    SpringBoot面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    zookeeper面试专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    常见面试算法题汇总专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    计算机网络基础专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

    设计模式专题

    这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南
    专题**

    [外链图片转存中…(img-HgQScOhJ-1626022597870)]

    SpringBoot面试专题

    [外链图片转存中…(img-08hNQLyY-1626022597870)]

    zookeeper面试专题

    [外链图片转存中…(img-hCHyj9lV-1626022597871)]

    常见面试算法题汇总专题

    [外链图片转存中…(img-EpxYaqpq-1626022597872)]

    计算机网络基础专题

    [外链图片转存中…(img-cExfKjiD-1626022597873)]

    设计模式专题

    [外链图片转存中…(img-SdJxBHtT-1626022597874)]

    展开全文
  • (说了限、压测、监控等模块的实现) 这个不是中间件做的事么,为什么你们部⻔做?(当时没有单独的中间件团队,微服务刚搞不久,需要进⾏监控和性能优化) 说说Spring的⽣命周期吧 说说GC的过程(说了young gc和full ...

    蚂蚁一面

    ⼀⾯就做了⼀道算法题,要求两⼩时内完成,给了⻓度为N的有重复元素的数组,要求输出第10⼤的数。典型的TopK问题,快排算法搞定。算法题要注意的是合法性校验、边界条件以及异常的处理。另外,如果要写测试⽤例,⼀定要保证测试覆盖场景尽可能全。加上平时刷刷算法题,这种考核应该没问题的。

    蚂蚁二面

    • ⾃我介绍下呗
    • 开源项⽬贡献过代码么?(Dubbo提过⼀个打印accesslog的bug算么)
    • ⽬前在部⻔做什么,业务简单介绍下,内部有哪些系统,作⽤和交互过程说下
    • Dubbo踩过哪些坑,分别是怎么解决的?(说了异常处理时业务异常捕获的问题,⾃定义了⼀个异常拦截器)
    • 开始进⼊正题,说下你对线程安全的理解(多线程访问同⼀个对象,如果不需要考虑额外的同步,调⽤对象的⾏为就可以获得正确的结果就是线程安全)
    • 事务有哪些特性?(ACID)
    • 怎么理解原⼦性?(同⼀个事务下,多个操作要么成功要么失败,不存在部分成功或者部分失败的情况)
    • 乐观锁和悲观锁的区别?(悲观锁假定会发⽣冲突,访问的时候都要先获得锁,保证同⼀个时刻只有线程获得锁,读读也会阻塞;乐观锁假设不会发⽣冲突,只有在提交操作的时候检查是否有冲突)这两种锁在Java和MySQL分别是怎么实现的?(Java乐观锁通过CAS实现,悲观锁通过synchronize实现。mysql乐观锁通过MVCC,也就是版本实现,悲观锁可以通过select… forupdate加上排它锁)
    • HashMap为什么不是线程安全的?(多线程操作⽆并发控制,顺便说了在扩容的时候多线程访问时会造成死锁,会形成⼀个环,不过扩容时多线程操作形成环的问题再JDK1.8已经解决,但多线程下使⽤HashMap还会有⼀些其他问题⽐如数据丢失,所以多线程下不应该使⽤HashMap,⽽应该使⽤ConcurrentHashMap)怎么让HashMap变得线程安全?(Collections的synchronize⽅法包装⼀个线程安全的Map,或者直接⽤ConcurrentHashMap)两者的区别是什么?(前者直接在put和get⽅法加了synchronize同步,后者采⽤了分段锁以及CAS⽀持更⾼的并发)
    • jdk1.8对ConcurrentHashMap做了哪些优化?(插⼊的时候如果数组元素使⽤了红⿊树,取消了分段锁设计,synchronize替代了Lock锁)为什么这样优化?(避免冲突严重时链表多⻓,提⾼查询效率,时间复杂度从O(N)提⾼到O(logN))
    • redis主从机制了解么?怎么实现的?
    • 有过GC调优的经历么?(有点虚,答得不是很好)
    • 有什么想问的么?

    蚂蚁三面

    • 简单⾃我介绍下
    • 监控系统怎么做的,分为哪些模块,模块之间怎么交互的?⽤的什么数据库?(MySQL)使⽤什么存储引擎,为什么使⽤InnnoDB?(⽀持事务、聚簇索引、MVCC)
    • 订单表有做拆分么,怎么拆的?(垂直拆分和⽔平拆分)
    • ⽔平拆分后查询过程描述下
    • 如果落到某个分⽚的数据很⼤怎么办?(按照某种规则,⽐如哈希取模、range,将单张表拆分为多张表)
    • 哈希取模会有什么问题么?(有的,数据分布不均,扩容缩容相对复杂 )
    • 分库分表后怎么解决读写压⼒?(⼀主多从、多主多从)
    • 拆分后主键怎么保证位置?(UUID、Snowflake算法)
    • Snowflake⽣成的ID是全局递增唯⼀么?(不是,只是全局唯⼀,单机递增)
    • 怎么实现全局递增的唯⼀ID?(讲了TDDL的⼀次取⼀批ID,然后再本地慢慢分配的做法)
    • Mysql的索引结构说下(说了B+树,B+树可以对叶⼦结点顺序查找,因为叶⼦结点存放了数据结点且有序)
    • 主键索引和普通索引的区别(主键索引的叶⼦结点存放了整⾏记录,普通索引的叶⼦结点存放了主键ID,查询的时候需要做⼀次回表查询)⼀定要回表查询么?(不⼀定,当查询的字段刚好是索引的字段或者索引的⼀部分,就可以不⽤回表,这也是索引覆盖的原理)
    • 你们系统⽬前的瓶颈在哪⾥?
    • 你打算怎么优化?简要说下你的优化思路
    • 有什么想问我么?

    蚂蚁四面

    • 介绍下⾃⼰
    • 为什么要做逆向?
    • 怎么理解微服务?
    • 服务治理怎么实现的?(说了限流、压测、监控等模块的实现)
    • 这个不是中间件做的事么,为什么你们部⻔做?(当时没有单独的中间件团队,微服务刚搞不久,需要进⾏监控和性能优化)
    • 说说Spring的⽣命周期吧
    • 说说GC的过程(说了young gc和full gc的触发条件和回收过程以及对象创建的过程)
    • CMS GC有什么问题?(并发清除算法,浮动垃圾,短暂停顿)
    • 怎么避免产⽣浮动垃圾?(记得有个VM参数设置可以让扫描新⽣代之前进⾏⼀次young gc,但是因为gc是虚拟机⾃动调度的,所以不保证⼀定执⾏。但是还有参数可以让虚拟机强制执⾏⼀次young gc)
    • 强制young gc会有什么问题?(STW停顿时间变⻓)
    • 知道G1么?(了解⼀点 )
    • 回收过程是怎么样的?(young gc、并发阶段、混合阶段、full gc,说了Remember Set)
    • 你提到的Remember Set底层是怎么实现的?
    • 有什么想问的么?

    ⼩结

    蚂蚁⾯试⽐较重视基础,所以Java那些基本功⼀定要扎实。蚂蚁的⼯作环境还是挺赞的,因为我⾯的是稳定性保障部⻔,还有许多单独的⼩组,什么三年1班,很有⻘春的感觉。⾯试官基本⽔平都⽐较⾼,基本都P7以上,除了基础还问了不少架构设计⽅⾯的问题,收获还是挺⼤的。

    拼多多

    • ⾯试前
    • ⼀⾯
    • ⼆⾯
    • 三⾯
    • ⼩结

    凭借这些Java知识文档我收获了蚂蚁、拼多多、字节跳动Offer

    ⾯试前

    ⾯完蚂蚁后,早就听闻拼多多这个独⻆兽,决定也去⾯⼀把。⾸先我在脉脉找了⼀个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多⾯试之旅。这⾥要⾮常感谢拼多多HR⼩姐姐,从⾯试内推到offer确认⼀直都在帮我,⼈真的很nice。

    拼多多一面:

    • Java中的HashMap、TreeMap解释下?(TreeMap红⿊树,有序,HashMap⽆序,数组+链表)
    • TreeMap查询写⼊的时间复杂度多少?(O(logN))
    • HashMap多线程有什么问题?(线程安全,死锁)怎么解决?( jdk1.8⽤了synchronize + CAS,扩容的时候通过CAS检查是否有修改,是则重试)重试会有什么问题么?(CAS(Compare And Swap)是⽐᫾和交换,不会导致线程阻塞,但是因为重试是通过⾃旋实现的,所以仍然会占⽤CPU时间,还有ABA的问题)怎么解决?(超时,限定⾃旋的次数,ABA可以通过原理变量AtomicStampedReference解决,原理利⽤版本号进⾏⽐᫾)超过重试次数如果仍然失败怎么办?(synchronize互斥锁)
    • CAS和synchronize有什么区别?都⽤synchronize不⾏么?(CAS是乐观锁,不需要阻塞,硬件级别实现的原⼦性;synchronize会阻塞,JVM级别实现的原⼦性。使⽤场景不同,线程冲突严重时CAS会造成CPU压⼒过⼤,导致吞吐量下降,synchronize的原理是先⾃旋然后阻塞,线程冲突严重仍然有向滔的吞吐量,因为线程都被阻塞了,不会占有CPU )
    • 如果要保证线程安全怎么办?(ConcurrentHashMap)
    • ConcurrentHashMap怎么实现线程安全的?(分段锁)
    • get需要加锁么,为什么?(不⽤,volatile关键字)
    • volatile的作⽤是什么?(保证内存可⻅性)
    • 底层怎么实现的?(说了主内存和⼯作内存,读写内存屏障,happen-before,并在纸上画了线程交互图)
    • 在多核CPU下,可⻅性怎么保证?(思考了⼀会,总线嗅探技术)
    • 聊想聊,系统之间是怎么交互的?
    • 系统并发多少,怎么优化?
    • 给我⼀张纸,画了⼀个九⽅格,都填了数字,给⼀个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低(内⼼OS:之前貌似碰到过这题,最优解是怎么实现来着)思考中。。。
    • 可以先说下你的思路(想起来了,说了什么时候要变换⽅向的条件,向右、向下、向左、向上,依此循环)
    • 有什么想问我的?

    拼多多二面:

    • ⾃我介绍下
    • ⼿上还有其他offer么?(拿了蚂蚁的offer)
    • 部⻔组织结构是怎样的?(这轮不是技术⾯么,不过还是⽼⽼实实说了)
    • 系统有哪些模块,每个模块⽤了哪些技术,数据怎么流转的?(⾯试官有点秃顶,⼀看级别就很⾼)给了我⼀张纸,我在上⾯简单画了下系统之间的流转情况
    • 链路追踪的信息是怎么传递的?(RpcContext的attachment,说了Span的结构:parentSpanId +curSpanId)
    • SpanId怎么保证唯⼀性?(UUID,说了下内部的定制改动)
    • RpcContext是在什么维度传递的?(线程)
    • Dubbo的远程调⽤怎么实现的?(讲了读取配置、拼装url、创建Invoker、服务导出、服务注册以
    • 及消费者通过动态代理、filter、获取Invoker列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝⼝⽔么
    • Spring的单例是怎么实现的?(单例注册表)
    • 为什么要单独实现⼀个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进⾏⼀些监控和性能优化)
    • 谁主导的?内部还在使⽤么?
    • 你向有想过怎么做成通航么?
    • 有什么想问的么?

    拼多多三面:

    ⼆⾯⽼⼤⾯完后就直接HR⾯了,主要问了些职业发展、是否有其他offer、以及⼊职意向等问题,顺便说了下公司的福利待遇等,都⽐较常规啦。不过要说的是⼿上有其他offer或者⼤⼚经历会有⼀定加分

    拼多多的⾯试流程就简单许多,毕竟是⼀个成⽴四年多的公司。⾯试难度中规中矩,只要基础扎实应该不是问题。但不得不说⼯作强度很⼤,开始⾯试前HR就提前和我确认能否接受这样强度的⼯作,想来的⽼铁还是要做好准备

    最后

    由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

    image

    本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
    有需要的朋友可以点击这里免费获取

    image

    有对应的视频解析总结。**
    有需要的朋友可以点击这里免费获取

    [外链图片转存中…(img-e57QfuSe-1625427236927)]

    image

    展开全文
  • 一、什么是工作流工作流(WorkFlow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,...

    74316513a7319665420c3a3f4bf3b0e2.png

    一、什么是工作流?

    工作流(WorkFlow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递。下面我们以“员工请假的流程”为例,来为大家介绍什么是工作流。

    ac6dbe2c002b560de42de5b9cb42d181.png

    这个例子包含了一个完整的员工请假流程。从“请假流程开始”,到“员工填写请假条”,再到“部门经理审批”,如果审批不通过,流程回到“员工填写请假条”;如果部门经理审批通过,则流程进入下一个节点;直到最后的流程结束。在Java中,我们可以使用一些框架帮助我们来实现这样的过程。Java的三大主流工作流引擎分别是:Shark,osworkflow,JBPM

    二、什么是Oozie?

    关于什么是Oozie,其实Oozie是服务于Hadoop生态系统的工作流调度工具,Job运行平台是区别于其他调度工具的最大的不同。但其实现的思路跟一般调度工具几乎完全相同。Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。Oozie工作流中的Action在运程系统运行如(Hadoop,Pig服务器上)。一旦Action完成,远程服务器将回调Oozie的接口 并通知Action已经完成,这时Oozie又会以同样的方式执行工作流中的下一个Action,直到工作流中所有Action都完成(完成包括失败)。Oozie工作流提供各种类型的Action用于支持不同的需要,如Hadoop Map/Reduce,Hadoop File System,Pig,SSH,HTTP,Email,Java以及Oozie子流程。Oozie也支持自定义扩展以上各种类型的Action。

    一个正常工作的Oozie系统须包含如下四个模块:Oozie Client、Oozie Server、DataBase和Hadoop集群。

    • Oozie Client可以通过Web Service API、Java API、Command line 方式向Oozie Server提交工作流任务请求。Oozie客户端可以通过REST API或者Web GUI来从Oozie服务端获取Job的日志流。通常在Client端包括工作流配置文件、工作流属性文件和工作流库。

    • Oozie Server负责接收客户端请求、调度工作任务、监控工作流的执行状态。Oozie本身不会执行具体的Job,而是将Job的配置信息发送到执行环境。

    • DataBase用于存储Bundle、Coordinator、Workflow工作流的Action信息、Job信息,记录Oozie系统信息。简单说,除了Oozie 运行日志存在本地硬盘不存在DB中,其他信息都存储到DB。

    • Hadoop集群运行Oozie工作流的实体,负责处理Oozie Server提交来的各种Job。包括HDFS、MapReduce、Hive、Sqoop等Hadoop组件提交的Job。

    三、编译Oozie

    • 使用的版本信息如下

    Hadoop 2.4.1JDK 1.7Maven 3.5.0Oozie 4.3
    • 在oozie解压后的目录下,编译oozie,执行命令:

    bin/mkdistro.sh -DskipTests -Dhadoop.version=2.4.1

    注意:如果第一次安装,Maven会自动下载依赖的jar包,时间可能    会比较长。

    • 如果出现下面的错误,表示Maven的内存溢出。

    3a468e7d44cc834e88ce52d63a7fa143.png

    设置环境变量:export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m"并且重新编译。
    • 编译完成,成功出现以下提示。

    2a2930d56f5a18d2c65d02430f53f243.png

    四、安装部署Oozie

    • 解压安装包

    tar -zxvf oozie-4.3.0-distro.tar.gz -C ~/training/
    • 设置环境变量

    ff0d55ea59f656e0d9b9247b128e55b1.png

    • 建立MySQL数据库

    create database oozie;create user 'oozieowner'@'%' identified by 'password';              grant all on oozie.* TO 'oozieowner'@'%'; grant all on oozie.* TO 'oozieowner'@'localhost' identified by 'password';
    • 修改文件:conf/oozie-site.xml

    8fe1c49cce613e978bc187e45c569282.png

    • 配置oozie的web console

    (*)创建目录:mkdir /root/training/oozie-4.3.0/libext
    (*)将文件ext-2.2.zip和mysql的驱动上传到这个目录
    (*)拷贝$HADOOP_HOME/share/hadoop/*/*.jar和$HADOOP_HOME/share/hadoop/*/lib/*.jar到Oozie的libext目录下
    (*)由于hadoop和oozie自带的tomcat jar包有冲突,所以需要把冲突的jar包驱动。执行下面的命令:
    cd /root/training/oozie-4.3.0/libextmv servlet-api-2.5.jar servlet-api-2.5.jar.bakmv jsp-api-2.1.jar jsp-api-2.1.jar.bakmv jasper-compiler-5.5.23.jar jasper-compiler-5.5.23.jar.bakmv jasper-runtime-5.5.23.jar jasper-runtime-5.5.23.jar.bak 
        
    • 初始化oozie

    (*)生成oozie web console的war包:oozie-setup.sh prepare-war
    (*)初始化数据库:ooziedb.sh create -sqlfile oozie.sql -run
    (*)将不同任务依赖的共享jar包上传到HDFS:
    oozie-setup.sh sharelib create -fs hdfs://hadoop111:9000

    (*)修改oozie-4.3.0/oozie-server/conf/server.xml,注释掉下面的记录:

    729d4d5987d2f2d36503076555a34c5e.png

    • 启动oozie和Hadoop的historyserver

    oozied.sh startmr-jobhistory-daemon.sh start historyserver
    • 访问URL地址:http://192.168.88.111:11000/oozie/

    c28714cf4997c8daf917e69534fefe87.png

    74316513a7319665420c3a3f4bf3b0e2.png

    展开全文
  • java中Activiti工作流引擎关于- 提交审批审批一些源码java中Activiti工作流引擎关于- 提交审批审批一些源码
  • java实现工作流

    2021-02-24 07:00:16
    2.1 工作流 3 2.1.1 什么叫工作流 3 2.1.2 工作流发展 3 2.1.3 工作流的优点 3 2.2 MVC工作模式 4 2.2.1 MVC设计思想 4 2.2.2 MVC的具体实现 5 2.2.3 MVC的不足 6 2.3 JSP技术介绍 6 2.3.1 JSP的运行原理 7 2.3.2 ...
  • Java实现工作流技术简介,资料压缩包中含有两个java实现工作流技术的文档,一个是基础介绍,一个是web介绍,都很基础,希望能帮到童鞋们的困难。
  • java工作流流程图,java生成流程图
  • Java开源工作流对比

    万次阅读 2018-02-24 15:24:10
    Java开源工作流对比工作流(Workflow)1、业务过程的部分或整体在计算机应用环境下的自动化;2、是对工作流程及其各步骤之间业务规则的抽象、概括描述;3、工作流主要解决的问题是:为了实现某个业务目标,利用计算机...
  • 博文来源:http://www.fhadmin.org/webnewsdetail1.html 即时通讯:支持好友,群组,发图片、文件,消息声音提醒,离线消息,保留聊天记录 工作流模块-----------------------------------------------------...
  • 工作流模块---------------------------------------------------------------------------------------------------------- 1.模型管理 :web在线流程设计器、预览流程xml、导出xml、部署流程 2.流程...
  • 因为最近在搞一些工作流的事情,而传统的Activity等工作流又太重,不太适合我们的系统,所以在网上找到了Apache Commons Chain这个实现比较轻的Command模式与责任链模式结合的工作流实现。 这个架构主要有Command、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,900
精华内容 2,760
关键字:

java审批工作流

java 订阅