云效系统提升子信面试
1、线程怎么保持同步
使用synchronized关键字同步方法或代码
2、spring中bean的周期是怎样的
3、给了一个场景,在一个数组中怎么找出两个相加是是10的数(这题不能问,必须写代码)
4、dubbo但是对使用方式和分布式架构原理 优先问, 5分钟左右
http://blog.csdn.net/chao_19/article/details/51764150
5、抽象类和接口区别,多线程及其同步方式
前段时间我面试的时候总结的笔记:
抽象类:
1) 抽象方法,只有行为的概念,没有具体的行为实现。 使用:abstract 关键字修饰,并且没有方法体。
2) 包含抽象方法的类,就一定是抽象类。 使用: abstract 关键字修饰,包含抽象方法。 3) 抽象类不能直接创建实例。可以定义引用变量。
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实 现所有抽象方法。
5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
接口:
1 接口:全部的方法都是抽象方法,全部的属性都是常量。 接口用来表示纯抽象概念,没有任何具体的方法和属性。
2 不能实例化,可以定义变量。
3 接口变量可以引用具体实现类的实例。
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的 抽象方法。
5 接口之间可以继承。
6 一个具体类可以实现多个接口,实现多继承现象,表示:
7 接口中的属性,默认是常量 public static final
8 接中的方法一定是:public abstract
9 实现一个接口,使用关键字implements, 实现实际上是 一种继承关系。接口和实现类是父子类型的关系
Round1:
1、ConcurrentHashMap内部原理?它是如何实现多线程的
在JDK1.7之前,ConcurrentHashMap是通过分段锁机制来实现的,所以其最大并发度受Segment的个数限制。因此,在JDK1.8中,ConcurrentHashMap的实现原理摒弃了这种设计,而是选择了与HashMap类似的数组+链表+红黑树的方式实现,而加锁则采用CAS和synchronized实现。
原文:https://blog.csdn.net/bill_xiang_/article/details/81122044
2、线程池,线程池里面核心线程数和最大线程数有什么区别
这么比喻吧,核心线程数就像是工厂正式工,最大线程数,就是工厂临时工作量加大,请了一批临时工,临时工加正式工的和就是最大线程数,等这批任务结束后,临时工要辞退的,而正式工会留下。
3、spring和springBoot比较,springboot使用场景
- springboot的部署如何区分开发环境和生产环境(application.properties)
首先,我们要建立三个配置文件,一个名为
application.properties
另两个名为:
application-dev.properties
application-prod.properties
在application.properties 中,我们可以设置一个开关:
spring.profiles.active=prod或spring.profiles.active=dev
通过开关来确定使用生产配置,还是开发配置
(对于已上线的版本,如何将生产环境修改成为开发环境)
5、分布式(没用过的话不会细问)
分布式是指将不同的业务分布在不同的地方。(卖火车票的例子~~想想)
Round2:
1、int类型数组,取到两两相加结果等于某给定变量的所有组合方式
直接for循环,说出代码(时间复杂度)
HashMap/HashSet方式(假定数组里面的数值没有重复项)
排序方式
2、volatile关键字
可见性、非原子、禁指令重排
3、序列化/反射
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象
反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力
4、多线程单例(创建一个多线程单例,说出大致代码)
5、针对数据查询量过大进行优化操作
天猫出海穿雪面试:
1、服务器线程还在,但是服务器无响应,你的解决思路?
2、系统设计,架构设计,JVM原理,classloader原理 重点
3、aop的实现原理
4、sevlet实现原理
5、设计模式
6、继承和实现的理解
7、会问一堆事务,数据库对事务的支持让你设计
8、聊业务等
9、写一个方法模拟:一个账户向另一个账户转钱。
10、spring的ioc原理,如果让你自己写一个类似的原理,你怎么写
11、Hadoop,hdfs的高可用等原理
12、
直接用阿里的场景模拟问题,而不是技术的底层提问,考应用,而不是考技术深度(客户注重的还是思维模式和解决问题的思路)
第一问最近的项目设计思路及适用场景
第二问,项目采用soa设计架构所使用的技术
第三问,分布式服务架构框架dubbo的实现原理
第四问,dubbo中采用服务注册发布zookeeper实现原理
第五问,Spring实现原理
第六问,项目中采用消息队列的适用场景
第七问,多线程变成适用场景
第八问,项目中涉及大数据量的处理方式
第九问,大数据量情况下分表操作的设计方式
第十问,针对分表后的数据,如何适应业务需要,如统计,数据浏览等应对策略
智慧建筑面试问题:
1、 arraylist和linkedlist的区别。Linkedlist是双向的吗?
2、 hashmap的原理(先hashcode还是先equal)。
3、 线程的sleep()和wait()的区别(我是结合生产者和消费者问题回答的)。
4、 线程池的原理与使用场景。
5、 Hibernante和mybatis的区别,mybatis的主键回填。
6、 Dubbo的zk集群挂掉,dubbo还能使用吗(PS:dubbo有缓存)。 Zk(dubbo注册中心) 重点
7、 Zk的节点数量为什么是奇数个(考察ZK原理)。 重点
8、 消息中间件RabbitMQ,消息的丢失是怎么处理的,监听器没有收到消息,MQ会丢掉数据吗?MQ会不会将消息缓存到硬盘?
9、 算法,数组排序。
10、 Sql的left join和right join的区别。
11、 Mybatis的join标签好像是,记不太清楚了,考察mybatis标签。
12、Zk分布式锁实现原理。
13、currenthashmap和hashmap 的区别。
14、spring aop 原理。 重点
15、你觉得你最值得骄傲的项目,什么架构。分布式事务方案,怎么解决分布式事务。
(主管偏向于解决实际问题和全局性的掌握~偏架构)
北京六翁面试题
- 说下jvm内存结构 详见:https://blog.csdn.net/chrise_/article/details/80591821
Java栈、堆、方法区、本地方法栈、程序计数器
- 说下Java中的锁 详见:https://blog.csdn.net/JWinni/article/details/94409236
1>悲观锁 vs乐观锁
- 公平锁vs非公平锁
公平锁:就是新来的线程乖乖排到队列最后去等待着~
非公平锁:就是新来的线程先试着插队能不能成功(获取到锁),成功的话,就在当前运行的线程执行完成后就拿到锁了,开始它的执行过程;如果插队失败,就和公平锁的流程一样,排到队伍最后去了
3>可重入vs不可重入
- Java垃圾回收机制
有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。
- 如果让你设计一个垃圾回收器你怎么设计
- ConcurrentHashMap原理
- TCP/CP模型,五层说下
- 对网络编程熟悉吗
- Netty保证高性能的原因是什么
- 投影仪两道题 1.lamda表达式 2.集合stream cp 的一道题 3.jdk8特性
- jdk8特性
Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。
方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
Date Time API − 加强对日期与时间的处理。
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
- 多线程用过吗
- 客户端发请求到服务器流程
- Springboot和spring区别
- spring的依赖注入
- jdk1.8的strema函数式编程
- dubbo的原理结构
- 多线程
- 线程间通信
- Nio bio
- Netty的高性能原理
- 数据采集的架构设计
- 线程和进程的关系
- Java的8种数据类型,以及各自的字节数
- Redis的数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
- Redis的底层源码
- 操作系统的内存结构
- 一个进程种有多个线程,那么内存结构应该是怎样的
骆炅Java面试题
- 问的java中都有哪些自带的线程池
- Java中jvm中的垃圾回收机制
- Spring的优点
- hashmap的底层实现和concurrenthashmap的优点
- dubbo的原理和优点
- 分布式
- dubbo+zookeeper+netty 常考 主要有分布式思想描述 还有dubbo实现的一些原理(比如jdk代理,反射,传输方式(netty NIO)),稍微深入一点可能考到原码级,当然还有zookeeper也很重要,比如里面的分布式锁是如何实现的,它起到的作用
- 可能会问一些linux命令 常见的 tail grep等等,再难一点就说不知道吧 或者百度一些常见的
- Hadoop一套可能问得特别少 如果是生产环境下没有开发过,几乎不问.
- 框架阶段
- Spring IOC、AOP的概念,原理 比如aop中jdk动态代理和cglib动态代理的区别,最好百度一下
- SpringMVC和struts2的区别,以及他们的原理执行流程都可以说说
- Mybatis 应该有些面试官也会问到,我没遇到,无非也是一些底层原理(反射加动态代理),还有一些常见标签,动态的,普通标签
- 可能问问mvc的思想
- Corejava
- 最喜欢问的就是 集合,线程,线程池
- 集合分为list /set /map
- 其中List 常见linkedList ArrayList vectory
- Set 常见 hashset sortedSet
- Map 常见hashmap hashtable
- 常考 list 下面几个的区别,或者List和set的区别 及底层数据结构实现,还有hashSet底层如何实现去重(大致:比较hashcode ,如果不同,则不同,如果相同,再比较equals方法)
- 还有就是hashmap的实现原理(经常考),底层采用数组加链表实现
- 比如put一个元素,第一次取得他的hash值,作为数组下标 放入对应hash槽,如果槽里为空,直接放进去,不为空,放在槽下面的链表表头 (一个大概的情况,具体再去了解一下)
- 还有可能问高并发情况下使用的集合,有了解最好!
- 线程,
- jdk中线程有几种使用方式,Thread类,实现runable 接口,实现callable接口
- 线程同步的几种方式(差不多七种 ,百度一下,常见下面几种吧。。
- 1)Synchronized 关键字
- 2)Lock
- 3)Volite关键字 (这个用挺多的,网上看下原理,到时候主动说一下)
- …….
- 线程池
- 为什么要用线程池 ,池里几个参数什么意思(比如核心线程数和最大线程数的区别),线程池使用时候不同阶段是什么情况
- 深一点可能比较难了,为什么要用线程池,你在哪些地方用到过,常见线程模型有哪些,根据情况看看吧
- 其它
- Jvm调优,主要调哪些主要参数,什么意思,有可能给你个情形问你怎么调参数,
- 还有什么时候会有gc ,什么时候会fullGc 基础的记一下,不会的就说不知道
- 还有数据库优化 ,比如查询优化等等。还可能问道悲观锁和乐观锁,能看懂就看看,大致讲一下,不懂就说不会
- HashMap跟hashTable区别,分布式锁原理,整数数组绝对值排序,hashMap扩容机制,事务传播特性,分布式事物解决方案,悲观锁与乐观锁区别
- Java线程的状态
- 进程和线程的区别,进程间如何通讯,线程间如何通讯
- HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别
- Cookie和Session的区别
- 索引有什么用?如何建索引?
- ArrayList是如何实现的,ArrayList和LinedList的区别?ArrayList如何实现扩容。
- equals方法实现
- 面向对象
- 线程状态,BLOCKED和WAITING有什么区别
- JVM如何加载字节码文件
- JVM GC,GC算法。
- 什么情况会出现Full GC,什么情况会出现yong GC。
- JVM内存模型
- Java运行时数据区
- 事务的实现原理
ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
- 技术深度
- 有没有看过JDK源码,看过的类实现原理是什么。
- HTTP协议
- TCP协议
- 一致性Hash算法
- JVM如何加载字节码文件
- 类加载器如何卸载字节码
- IO和NIO的区别,NIO优点
- Java线程池的实现原理,keepAliveTime等参数的作用。
方法参数:
corePoolSize:核心线程数
maxPoolSize:最大线程数
keepAliveTime:线程存活时间(在corePore<* timeUnit:存活时间的时间单位 workQueue:阻塞队列(用来保存等待被执行的任务) IOC:控制反转也叫依赖注入,IOC利用java反射机制,AOP利用代理模式。所谓控制反转是指,本来被调用者的实例是由调用者来创建的,这样的缺点是耦合性太强,IOC则是统一交给spring来管理创建,将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类。 AOP:面向切面编程。(Aspect-Oriented Programming) AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码,属于静态代理 不繁组颉育帅总结面试题 吴嘉豪总结 分布式用dubbo有没有遇到什么问题 springcloud问了,但是我没用过那个 Dubbo他问的特别恐怖,直接问你对dubbo有多少了解,有多少说多少 数据结构也有问 Jvm的东西问了一些 不繁组乐得松总结 1.mysql索引有哪几种?索引算法有哪些? 2.mysql数据库锁有哪些,分别解释一下应用场景? 3.dubbo实现原理,有哪些组成部分? 4.悲观锁和乐观锁应用场景分别有哪些?哪种效率高? 5.redis数据淘汰策略? 6.spring aop ioc原理? 7.sql语句性能优化? 8.实现事务的方式有几种? 任建总结 描述JVM原理 多线程synchronized用法 内存溢出 调优JVM相关参数 HashMap原理,如何实现的 如何遇防重复提交 后端怎么做? 分页处理上亿条数据如何提高速度 2018.4.12 宇轩Java石惠文总结面试题 一.SpringMVC 启动加载类的方法有几种 1、若采用XML来配置init-method 2、@PostConstruct注解 二、dubbo原理 三、最近的一个项目的业务流程与使用到的技术, 四、对SpringBoot的了解 五、分布式事务 菜鸟组总结 简单做一下自我介绍 简单介绍一下最近做的这个项目 说说库存的并发是怎么解决的 自己搭建过集群的,说说session共享是怎么做的 你在这个项目中遇到什么问题,是怎么解决的 熟悉spring吗 Dubbo工作原理了解吗,说一下你对zookper的理解 Spring bean的声明周期 Svn的版本 多线程高并发 SQL优化,数据库优化,代码优化 Jvm原理 Java集合底层 Redis使用场景、存储类型等等 简单做一下自我介绍 简单介绍一下最近做的这个项目 说说库存的并发是怎么解决的 自己搭建过集群的,说说session共享是怎么做的 你在这个项目中遇到什么问题,是怎么解决的 熟悉spring吗 Dubbo工作原理了解吗,说一下你对zookper的理解 Spring bean的声明周期 Svn的版本 多线程高并发 SQL优化,数据库优化,代码优化 Jvm原理 Java集合底层 Redis使用场景、存储类型等等 马来西亚项目初步晒选 1.数据库量级 2.数据结构算法 3.多线程分布式 李成总结 1.Hashmap底层实现 2.限流的做法 3.Mq的幂等性解决方案 4.Redis数据库缓存一致性的解决方案 5.介绍Equals hashcode 6.用户请求响应慢,你所能想到的优化方案 7.介绍自己的项目 魏旭科总结 1,自我介绍 2,项目介绍 3,项目难点介绍 4,项目难点攻克方法介绍 5,数据一致性保障 6,悲观锁乐观锁介绍 7,HashMap介绍 任建总结 String为什么需要hashCode和equals方法 HashMap原理 先让我说下自己做的项目 让我些个DRM组件,怎么写 TR服务调用出现问题,怎么排查 徐思衍总结 jvm内存模型,hashmap 数据库优化 jvm内存模型,hashmap 数据库优化 dubbo的实现机制 然后就是问你做过的工程 许硕总结 1.工作项目介绍 2.项目分布式怎么升级的 3.dubbo项目简单的搭建过程 4.springIOC 5.事务传播性 6.redis和数据库的数据一致性 7.怎么做sql优化的 8.jvm相关,杂七杂八的(volatile 原理,static属性放到哪里,垃圾回收机制,幂等性之类的) 9.线程池 10.spring依赖注入的方式,springIOC自动装配有那集中方法 11.分布式事务大概思路 12.cocurrenthashmap如何实现高并发的 13.开发报表系统是sql怎么优化的 分布式dubbo+zookeeper+netty 常考 主要有分布式思想描述 还有dubbo实现的一些原理(比如jdk代理,反射,传输方式(netty NIO)),稍微深入一点可能考到原码级,当然还有zookeeper也很重要,比如里面的分布式锁是如何实现的,它起到的作用可能会问一些linux命令 常见的 tail grep等等,再难一点就说不知道吧 或者百度一些常见的Hadoop一套可能问得特别少 如果是生产环境下没有开发过,几乎不问. 框架阶段 Spring IOC、AOP的概念,原理 比如aop中jdk动态代理和cglib动态代理的区别,最好百度一下 SpringMVC和struts2的区别,以及他们的原理执行流程都可以说说 Mybatis 应该有些面试官也会问到,我没遇到,无非也是一些底层原理(反射加动态代理),还有一些常见标签,动态的,普通标签 可能问问mvc的思想 Corejava 最喜欢问的就是集合,线程,线程池集合分为list /set /map 其中List 常见linkedList ArrayList vectory,Set 常见 hashset sortedSet ,Map 常见hashmap hashtable 。常考 list 下面几个的区别,或者List和set的区别 及底层数据结构实现,还有hashSet底层如何实现去重(大致:比较hashcode ,如果不同,则不同,如果相同,再比较equals方法),还有就是hashmap的实现原理(经常考),底层采用数组加链表实现 比如put一个元素,第一次取得他的hash值,作为数组下标 放入对应hash槽,如果槽里为空,直接放进去,不为空,放在槽下面的链表表头 (一个大概的情况,具体再去了解一下) 还有可能问高并发情况下使用的集合,有了解最好!线程, jdk中线程有几种使用方式,Thread类,实现runable 接口,实现callable接口,线程同步的几种方式(差不多七种 ,百度一下,常见下面几种吧。。 1)Synchronized 关键字 2)Lock 线程池 为什么要用线程池 ,池里几个参数什么意思(比如核心线程数和最大线程数的区别),线程池使用时候不同阶段是什么情况,深一点可能比较难了,为什么要用线程池,你在哪些地方用到过,常见线程模型有哪些,根据情况看看吧 其它 Jvm调优,主要调哪些主要参数,什么意思,有可能给你个情形问你怎么调参数, 还有什么时候会有gc ,什么时候会fullGc 基础的记一下,不会的就说不知道,还有数据库优化 ,比如查询优化等等。还可能问道悲观锁和乐观锁,能看懂就看看,大致讲一下,不懂就说不会