java面试
不知其所以然
这个作者很懒,什么都没留下…
展开
-
笔试-给出一个字符串输出所有的排序可能(java)
1. 目的最近笔试经常遇到这样的题目,或者类似的这样的题目,但是经常不知怎么做(有毒),所以特意来此记录一下做法。2. 代码(别人的代码)import java.util.Scanner;public class Main { //以chars数组的n号位置作为交换点,向后交换 public static void paiLie(int n,char[] chars){ //递归出口:只剩一个字符,即无法交换 if (n==chars.length-原创 2020-10-15 22:04:48 · 536 阅读 · 0 评论 -
java面试的一些基础知识
集合ConcurrentHashMap2. CASABA问题synchronized获取锁过程升级3. lock4. volatileJMM5. 线程池线程处理流程持续…原创 2020-09-28 20:26:53 · 105 阅读 · 0 评论 -
java实现一个简单的消息队列
1. 说明这个使用订阅者-发布者的模式,但也可以当生产者-消费者来使用,其实消息队列你可以简单就认为是一个简单的队列(Queue),但是如果你要考虑其他的话就比较复杂了,比如说负载均衡,消息重传,过滤,备份,分布式等等,这些的话,就不是一个级别的了(那是大佬干的活)。2. 代码结构(1)Message是一个消息类的实体。(2)MessageQue是一个消息队列接口。(3)…后面的看代码或者类名,注解也能懂。(4)注意:由于个人能力有限所以还有很多东西没有实现的,或者有点问题的,请各位大侠改正,原创 2020-08-05 23:22:03 · 878 阅读 · 0 评论 -
java中的引用类型
1. 概述本文章主要介绍java中的一些引用的类型,只是简单的提一些,后面考虑会补充(或者需要的话,可以搜索一下更详细的)。2. 分类2.1、强引用主要就是把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到,JVM也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。2.2、弱引用弱引用需要用WeakReference 类来实现,它比软引用的生存期更短,对于只有弱引用的对象 来说原创 2020-07-22 22:22:11 · 138 阅读 · 0 评论 -
java中实现多线程的方式
1. 说明根据本人的经验,如何实现多线程是在java学习乃至面试工作的时候,它都是一个比较重要的问题。下面我们将用代码的方式,展现给大家实现多线程的方法。2. 创建一个线程的方式通过实现 Runnable 接口;通过继承 Thread 类本身;通过 Callable 和 Future 创建线程。3. 代码实现(1)实现 Runnable 接口public class MyRunnable implements Runnable { private Thread t; p原创 2020-06-07 15:44:21 · 367 阅读 · 0 评论 -
java多线程中interrupted和isInterrupted区别
1. 说明主要通过一些使用来区别这两个函数。2. 区别1)this.interrupted():测试当前线程是否已经中断。2)this.isInterrupted():测试线程是否已经中断。3. 代码演示先讲interrupt()如下 package www.gzhou.thread2;public class MyThread4 extends Thread { @Override public void run() { super.run();原创 2020-06-07 00:15:00 · 210 阅读 · 0 评论 -
java多线程中this和Thread.currentThread()的区别
1. 说明本文主要从使用的层面说明它们的区别。2. 区别先写一个简单的代码程序:观察它的运行结果。package www.gzhou.thread2;public class MyThread extends Thread { @Override public void run() { super.run(); System.out.println("Thread.currentThread().getName()是"+Thread.curre原创 2020-06-06 16:03:36 · 519 阅读 · 0 评论 -
java中深拷贝和浅拷贝
深拷贝和浅拷贝1. 有关clone()方法来源:Object 通用方法中public native int hashCode()public boolean equals(Object obj)protected native Object clone() throws CloneNotSupportedExceptionpublic String toString()public final native Class<?> getClass()protected vo原创 2020-06-03 17:17:05 · 151 阅读 · 0 评论 -
Java中默认的类和方法修饰符
1. 解释(取自于on java8)示例代码要么使用 public 访问修饰符,要么就没使用修饰符(默认访问权限(default access))。默认访问权限没有关键字,通常被称为包访问权限(package access)(有时也称为 friendly)。这意味着当前包中的所有其他类都可以访问那个成员。对于这个包之外的类,这个成员看上去是 private 的。由于一个编译单元(即一个文件)只能隶属于一个包,所以通过包访问权限,位于同一编译单元中的所有类彼此之间都是可访问的。2. 代码(同一包下)原创 2020-05-16 23:06:00 · 4100 阅读 · 0 评论 -
设计模式5-面试
1. 说明本文主要介绍抽象工厂,观察者,策略,装饰。其他的模式,后面看情况再总结。2. 介绍顺序抽象工厂观察者策略装饰3. 正文抽象工厂提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被生产的方法。当需要创建产品家族和想让制造的相关产品集合起来时,就可以使用该模式。类图+解释:抽象工厂模式创建很多对象的而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。抽象工厂模式用到了工厂方法模式来原创 2020-06-07 23:28:36 · 254 阅读 · 0 评论 -
设计模式4-面试重点
1. 说明本章节主要介绍面试经常会被问到的一些基本的设计模式,其他不是特别“热门”的设计模式,后面都会逐一介绍。对于技术大家一定要记住没有最好的技术架构,只有最合适的。2、设计模式工厂方法模式模板方法模式抽象工厂模式代理模式2.1 工厂方法模式工厂方法模式是一种常见的设计模式。工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使一个类的实例化延迟到其子类。如下:package www.gzhou.Model;public class Factory {原创 2020-06-05 22:47:27 · 144 阅读 · 0 评论 -
设计模式3-总图
提示:本章节为《java面试系列》类似章节:java中设计模式设计模式21、总分类-创建型:单例简单工厂工厂方法抽象工厂生成器原型模式行为型责任链命令解释器迭代器中介者备忘录观察者状态策略模板方法访问者空对象结构型适配器桥接组合装饰外观享元代理...原创 2020-06-05 14:25:34 · 154 阅读 · 0 评论 -
设计模式2
提示:本章节为《java面试系列》类似章节:java中设计模式1. 设计模式的六大原则 - 单一职责原则 - 里氏替换原则 - 依赖倒置原则 - 接口隔离原则 - 迪米特法则 - 开闭原则1.1、单一职责原则单一职责规定了一个类应该只有一个发生变化的原因。如果一个类承担了多个职责,则会导致多个职责耦合在一起。但部分职责发生变化的时候,可能会导致其余职责跟着受到影响,也就是说我们的程序耦合性太强,不利于变化。1.2、里氏替换原则里氏替换是指所有父类可以出现的地方,子类就都可以出现,使原创 2020-06-05 12:55:35 · 119 阅读 · 0 评论 -
java中集合(容器)介绍
提示:本章节为《java面试系列》上一章:java中IOjava容器容器关系总图集合介绍集合中的设计模式迭代适配器底层原理- ArrayList1、概要2、扩容3、删除元素4、序列化5、速度6、快速失败安全实现- Vector安全扩容性能-LinkedList1、概要- HashMap1. 存储结构2.工作原理3.put操作4.put过程4.1 桶下标值4.2 hash值4.3 取模5. 扩容原理6. 重新计算桶下标7. 计算数组容量8.链表转红黑树杂谈-ConcurrentHashMap结构size原创 2020-06-04 21:37:09 · 986 阅读 · 0 评论 -
java中IO以及IO的经典使用
提示:本文章为Java面试系列上一章:多线程IO的经典使用和IO知识1、IO的经典使用2、标准IO3、IO分类4、操作5、NIO6、AIO1、IO的经典使用缓冲输入文件使用一个FileInputReader对象,使用路径名,为了提高速度,可以用缓存。public class BufferedInputFile { public static String read(String filename) { try (BufferedReader in = new Buff原创 2020-05-31 22:53:18 · 333 阅读 · 0 评论 -
java多线程编程知识
提示:文章为java面试系列上一章:设计模式多线程线程的概念使用线程方法多线程中线程池守护线程重要的Thread类的方法有关线程的中断InterruptedExceptionExecutor的中断操作互斥同步线程之间的协作线程的状态J.U.C包下的重要组件实现线程安全同步无同步锁优化线程的概念线程一个程序同时执行多个任务。通常,每一个任务称为一个线程,它是线程控制的简称。多进程与多线程区别本质:每一个进程拥有自己的一整套变量,而线程则共享数据。一般区别:线程更轻量级,创建开销小。使用线原创 2020-05-30 13:10:08 · 394 阅读 · 0 评论 -
java中设计模式
提示:该文章为《java面试系列》设计模式一、模式分类二、面向实现一、模式分类“设计模式”一书讨论了23种不同的模式,分为以下三种类别(所有这些模式都围绕着可能变化的特定方面)。创建型:如何创建对象。 这通常涉及隔离对象创建的细节,这样你的代码就不依赖于具体的对象的类型,因此在添加新类型的对象时不会更改。单例模式(Singleton)被归类为创作模式,本章稍后你将看到Factory Method的示例。构造型:设计对象以满足特定的项目约束。它们处理对象与其他对象连接的方式,以确保系统中的更改不需要原创 2020-05-26 00:01:14 · 198 阅读 · 0 评论 -
java中基本数据类型
java基础1、基本数据类型2、取值范围3、包装类型4、缓冲池1、基本数据类型所占字节数byte:1字节short:2字节int:4个字节long:8字节float:4字节double:8字节char:2字节boolean:Java规范中并没有规定boolean类型所占字节数,Boolean的api中有两个值True,False,两个值可以用一个位来存储。编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。2、取值范围这里用代码验原创 2020-05-22 11:10:50 · 179 阅读 · 0 评论 -
java程序员如何复习
目录一. 说明二. 基础三. 进阶四. 计算机知识中"巨头"五. 算法一. 说明在接下来的时间内,我会从java中最基础的内容开始复习。列下一些复习要点,希望对大家有帮助。此后我会再发每个要点的知识总结等。同时推荐大家多看《java编程思想》这本书。二. 基础(1)数据类型和运算符基本类型包装类型缓存池算术运算符逻辑运算符移位运算符.....(2)String大概有三个StringStringBufferStringBuilder(3)运算函数调用float 与 d原创 2020-05-21 16:42:17 · 640 阅读 · 0 评论