阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

java高频面试题如下: java基础 Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何调优 线程池的最大线程数目根据什么确定 动态代理的几种方式 HashMap的并发问题 了解LinkedHashMap的应用吗 反射的原理,反射创建类实例的三种方式是什么? cloneable接口实现原理,浅拷贝or深拷贝 Java NIO使用 hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决 arraylist和linkedlist区别及实现原理 反射中,Class.forName和ClassLoader区别 String,Stringbuffer,StringBuilder的区别? 有没有可能2个不相等的对象有相同的hashcode 简述NIO的最佳实践,比如netty,mina TreeMap的实现原理 JVM相关 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序 JVM内存分代 Java 8的内存分代改进 JVM垃圾回收机制,何时触发MinorGC等操作 jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1 新生代和老生代的内存回收策略 Eden和Survivor的比例分配等 深入分析了Classloader,双亲委派机制 JVM的编译优化 对Java内存模型的理解,以及其在并发中的应用 指令重排序,内存栅栏等 OOM错误,stackoverflow错误,permgen space错误 JVM常用参数 tomcat结构,类加载器流程 volatile的语义,它修饰的变量一定线程安全吗 g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择 说一说你对环境变量classpath的理解?如果一个类不在classpath下,为什么会抛出ClassNotFoundException异常,如果在不改变这个类路径的前期下,怎样才能正确加载这个类? 说一下强引用、软引用、弱引用、虚引用以及他们之间和gc的关系 JUC/并发相关 ThreadLocal用过么,原理是什么,用的时候要注意什么 Synchronized和Lock的区别 synchronized 的原理,什么是自旋锁,偏向锁,轻量级锁,什么叫可重入锁,什么叫公平锁和非公平锁 concurrenthashmap具体实现及其原理,jdk8下的改版 用过哪些原子类,他们的参数以及原理是什么 cas是什么,他会产生什么问题(ABA问题的解决,如加入修改次数、版本号) 如果让你实现一个并发安全的链表,你会怎么做 简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处 简

英语达人告诉你,如何用美剧真正提升你的英语水平

英语达人告诉你,如何用美剧真正提升你的英语水平

没想到这篇日志会这么火,看到很多童鞋讨论有关美剧学习英语到底有没有用,以及用哪部美剧练习,我在这里想说这只是一个参考,世界上没有绝对的事情,究竟有没有用看个人,想必在校内上至少是高中生,大部分是大学生吧,如果你到现在还无法衡量自己的英语水平或者依旧被英语牵着鼻子走,我只能说我很抱歉,我觉得这不仅是个人的悲哀更是中国教育的悲哀。如果你到现在连自己基本的评判标准的话,即使存在完美无缺的日志,你依旧照搬照抄,不适合自己的实际情况,那一切皆为徒劳。就算这是学习英语的一条途径,有几个人能真的照着做呢?   1. 不是所有的美剧都适合学英语   如果喜欢看如《24小 时》这样的动作片, 那你基本会讲一口流利的"呯""轰""啊"之类的开枪爆炸声英语.如果你喜欢看如《豪斯医生》这种专业性很强的片子,那你基本会讲一些如 MRI,CT,Tumor之类的连自己都不明白的江湖郎中英语.如果看的是《越狱》,基本不用举手,别人就知道你是黑手党的了.不是所有剧都合适的,用来学习的美剧,是要有一定对话量,生活化的,平民化的片子.   2. 开着字幕看是没有前途的   很 多人喜欢开着字幕看,觉得会有参照更有帮助,其实这是在拖你的后腿.就像很多人结婚,喜欢找个比自己丑的伴娘,以为这样自己就进步了,事实上是被拖下水 了.中文是母语,对我们的眼球来说有无比强大的吸引力,只要在那里,你一定会看,就像放个美女在眼前,男人一定会看,不看的可能是老婆在一边,或是他爱人 也是个男人.一般人永远会不自觉通过中文字幕理解英语,而不是通过听懂-理解-记忆-重复,这样的过程学到英语.   3.看一遍是不够的   看 一遍根本不能叫学英语,充其量只能叫娱乐.如果是抱着学习的目的,必须反复看,精听,理解句子词语的意思,为我所用才行.如果看一遍,基本你就被情节彻底 打败了,或哭或笑,反复思考自己该拥有<HEROES>里的哪种超能力,担心下集可以下载前的日子该怎么过,哪还有心思管学英语这码事,哪怕讲 的是柬埔寨语都无所谓.所以通过看个几遍,基本到了对剧情已经免疫的程度,如看老友记看到已经笑不出来了,那差不多可以洗干净耳朵仔细听了.   给大家推荐几部我最喜欢用来正常学英语的美剧:   1. 初级:Friends   Friends是经典中的经典,对于英语初级水平的朋友来说,是突破发音和对话交流最好的美剧.整个剧都是人物间谈话,而且都很简短,没有长句,词汇非常简单,基本是plain english的典范.我发觉自己的英文有明显的提升,就是在看这部剧多达十遍后.   2. 中级:De

小米miui12.5加入了很多app启动广告

小米miui12.5加入了很多app启动广告

空闲喜欢用掌阅听听书,以前miui12时很早就改了miad文件夹,没感觉到广告多. 上两升级miui12.5,发现掌阅的启动广告简直变态,切换到后台再切回都会有广告,实在不能忍,就找出以前的ZUK装上掌阅看看. 竟然只有首次启动才有广告,后续怎么切后台都不会有广告了!原来一直都是MIUI添加的启动广告,且锅还让APP来背,MIUI实在高!! 手上有小米系和非小米的手机可以多比较一下,抽出更多被坑的APP!! 这里介绍一个解决的方法: 文件夹找到下面路经Android/data/com.miui.systemAdSolution把miad文件夹删除,另找一个非文件夹类型文件改下成miad 你会发现小米加入的烦人的启动广告全消失了,下图这种样式的广告就是miui添加的广告 

指令寄存器和程序计数器的区别

指令寄存器和程序计数器的区别

1、程序存储器(program storage) 在计算机的主存储器中专门用来存放程序、子程序的一个区域。 2、指令寄存器(IR ):用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。 3、程序计数器(PC):为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。 当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的地址,以此实现转移。有些机器中也称PC为指令指针IP(Instruction Pointer) 4、地址寄存器:用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。? 当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用 地址寄存器和数据缓冲寄存器 基本上定义就是区别和应用。

JTA + Atomikos 源码剖析

JTA + Atomikos 源码剖析

一、使用 1.1 增加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> </dependency> 复制代码 1.2 配置 application.yml spring: datasource: type: com.alibaba.druid.pool.xa.DruidXADataSource ### 主要就是更换链接池的 type 为 DruidXADataSource jta: log-dir: classpath:tx-logs transaction-manager-id: txManager 复制代码 1.3 更改 DataSource 配置 @Bean @Primary public DataSource dataSource() { // 使用 DruidXADataSource DruidXADataSource datasource = new DruidXADataSource(); datasource.setUrl(this.dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); try { datasource.setFilters(filters); } catch (SQLException e) { e.printStackTrace(); } datasource.setConnectionProperties(connectionProperties); // 将 DruidXADataSource 配置给 AtomikosDataSourceBean AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean(); atomikosDataSourceBean.setXaDataSource(datasource); return datasource; } @Bean(name = "xatx") @Primary

联系我们

联系电话

4000-640-466

联系邮箱

service@f-li.cn

办公地址

上海黄浦区外滩源1号

谢谢,您的信息已成功发送。
请填写信息。