1、常用设计模式

  • 单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。

  • 代理模式:动态代理和静态代理,什么时候使用动态代理。

  • 适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

  • 装饰者模式:动态给类加功能。

  • 观察者模式:有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

  • 策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

  • 外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

  • 命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。

  • 创建者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

  • 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。


2、基础知识

  • Java基本类型哪些,所占字节和范围

  • Set、List、Map的区别和联系

  • 什么时候使用Hashmap

  • 什么时候使用Linkedhashmap、Concurrenthashmap、Weakhashmap

  • 哪些集合类是线程安全的

  • 为什么Set、List、map不实现Cloneable和Serializable接口

  • Concurrenthashmap的实现,1.7和1.8的实现

  • Arrays.sort的实现

  • 什么时候使用CopyOnArrayList

  • volatile的使用

  • synchronied的使用

  • reentrantlock的实现和Synchronied的区别

  • CAS的实现原理以及问题

  • AQS的实现原理

  • 接口和抽象类的区别,什么时候使用

  • 类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机

  • 双亲委派模型

  • 反射机制:反射动态擦除泛型、反射动态调用方法等

  • 动态绑定:父类引用指向子类对象

  • JVM内存管理机制:有哪些区域,每个区域做了什么

  • JVM垃圾回收机制:垃圾回收算法 垃圾回收器 垃圾回收策略

  • jvm参数的设置和jvm调优

  • 什么情况产生年轻代内存溢出、什么情况产生年老代内存溢出

  • 内部类:静态内部类和匿名内部类的使用和区别

  • Redis和memcached:什么时候选择redis,什么时候选择memcached,内存模型和存储策略是什么样的

  • MySQL的基本操作 主从数据库一致性维护

  • mysql的优化策略有哪些

  • mysql索引的实现 B+树的实现原理

  • 什么情况索引不会命中,会造成全表扫描

  • java中bio nio aio的区别和联系

  • 为什么bio是阻塞的 nio是非阻塞的 nio是模型是什么样的

  • Javaio的整体架构和使用的设计模式

  • Reactor模型和Proactor模型

  • http请求报文结构和内容

  • http三次握手和四次挥手

  • rpc相关:如何设计一个rpc框架,从io模型 传输协议 序列化方式综合考虑

  • Linux命令 统计,排序,前几问题等

  • StringBuff 和StringBuilder的实现,底层实现是通过byte数据,外加数组的拷贝来实现的

  • cas操作的使用

  • 内存缓存和数据库的一致性同步实现

  • 微服务的优缺点

  • 线程池的参数问题

  • ip问题 如何判断ip是否在多个ip段中

  • 判断数组两个中任意两个数之和是否为给定的值

  • 乐观锁和悲观锁的实现

  • synchronized实现原理

  • 你在项目中遇到的困难和怎么解决的

  • 你在项目中完成的比较出色的亮点

  • 消息队列广播模式和发布/订阅模式的区别

  • 生产者消费者代码实现

  • 死锁代码实现

  • 线程池:参数,每个参数的作用,几种不同线程池的比较,阻塞队列的使用,拒绝策略

  • Future和ListenableFuture 异步回调相关

  • 算法相关:判断能否从数组中找出两个数字和为给定值,随机生成1~10000不重复并放入数组,求数组的子数组的最大和,二分查找算法的实现及其时间复杂计算


3、其它

  • 算法:常用排序算法,二分查找,链表相关,数组相关,字符串相关,树相关等

  • 常见序列化协议及其优缺点

  • memcached内存原理,为什么是基于块的存储

  • 搭建一个rpc需要准备什么

  • 如果线上服务器频繁地出现full gc ,如何去排查

  • 如果某一时刻线上机器突然量变得很大,服务扛不住了,怎么解决

  • LUR算法的实现

  • LinkedHashMap实现LRU

  • 定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数

  • 海量数据处理的解决思路

  • reactor模型的演变

  • 阻塞、非阻塞、同步、异步区别

  • Collection的子接口

  • jvm调优相关

  • zookeeper相关,节点类型,如何实现服务发现和服务注册

  • nginx负载均衡相关,让你去实现负载均衡,该怎么实现

  • linux命令,awk、cat、sort、cut、grep、uniq、wc、top等

  • 压力测试相关,怎么分析,单接口压测和多情况下的压测

  • 你觉得你的有点是什么,你的缺点是什么

  • spring mvc的实现原理

  • netty底层实现,IO模型,ChannelPipeline的实现和原理

  • 缓存的设计和优化

  • 缓存和数据库一致性同步解决方案

  • 你所在项目的系统架构,谈谈整体实现

  • 消息队列的使用场景

  • ActiveMQ、RabbitMQ、Kafka的区别

  • JVM内存分配策略和垃圾回收时机

  • JVM垃圾回收策略和对象的实际生命周期

JAVA 需要理解的重点 二的更多相关文章

  1. JAVA 需要理解的重点 一

    需要理解的重点内容有: JVM内存管理机制和垃圾回收机制(基本每次面试都会问,一定要搞得透彻) JVM内存调优(了解是怎么回事,一般做项目过程中使用较多) 设计模式(熟悉常见设计模式的应用场景,会画类 ...

  2. Java 反射理解(二)-- 动态加载类

    Java 反射理解(二)-- 动态加载类 概念 在获得类类型中,有一种方法是 Class.forName("类的全称"),有以下要点: 不仅表示了类的类类型,还代表了动态加载类 编 ...

  3. Java正则速成秘籍(二)之心法篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  4. 20145221 《Java程序设计》实验报告二:Java面向对象程序设计

    20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  5. Java初始化理解与总结 转载

    Java的初始化可以分为两个部分: (a)类的初始化 (b)对象的创建 一.类的初始化 1.1 概念介绍: 一个类(class)要被使用必须经过装载,连接,初始化这样的过程. 在装载阶段,类装载器会把 ...

  6. 从Java视角理解CPU缓存(CPU Cache)

    从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多 ...

  7. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. Effective Java通俗理解(持续更新)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  9. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

随机推荐

  1. C/C++中怎样获取日期和时间

    C/C++中怎样获取日期和时间摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实 ...

  2. 更改 vux Tabbar TabbarItem标题下方的文字激活时的颜色

    步骤一: 打开文件build/webpack.base.conf.js, 找到modeule.exports = vuxLoader, 修改如下(并保存) module.exports = vuxLo ...

  3. Unable to satisfy the following requirements解决方式

    今天从git上面download我们项目,然后向往常一样安装Cocoapods.可是却突然发现报错了,尝试了几遍.发现一直报错. 然后我这才看了一下,安装Cocoapods的日志,发现抛出了一个报错. ...

  4. python(29)- 面向对象练习Ⅲ

    题目: 基于授权定制自己的列表类型,要求定制的自己的__init__方法,   定制自己的append:只能向列表加入字符串类型的值      定制显示列表中间那个值的属性(提示:property)  ...

  5. Django-form组件补充

    首先来看一个用户登录的实例 from django.forms import Form from django.forms import fields from django.forms import ...

  6. Process Autocad by python

    一.处理AutoCad模块 -pyautocad 1.安装 pip install pyautocad 注:1.该操作会自动安装 comtypes模块,如果其他方式安装,请自行安装comtypes模块 ...

  7. POJ 3469(Dual Core CPU-最小割)[Template:网络流dinic V2]

    Language: Default Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 19321 ...

  8. windows下检验caffe是否配置正确

    windows下检验caffe是否配置正确:(注:不考虑搭建caffe的编译环境,而是直接使用caffe官网提供的二进制文件) windows版本源码以及二进制库文件下载地址:https://gith ...

  9. ORACLE 查看表结构

    select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select tabl ...

  10. Linux服务器Java输出文件中文乱码

    使用下面语句查看编码: String encoding = System.getProperty("file.encoding");结果输出:ANSI_X3.4-1968,从而导致 ...