
面试必备
来自我本人学习路上的的问题
finajoy
如果实在想联系我:wechat:17377866568(注明来意)
展开
-
String以及StringTable
String以及StringTable复盘 String有两种实例化的方式: String s1 = “atguigu”; //字面量的定义方式 String s2 = new String(“hello”); jdk8和jdk9中String底层变化 jdk8中String底层是用final修饰的char数组。 jdk9中是用final修饰byte数组。 为什么要做出这样的修改呢? 因为大部分字符串都是拉丁字符,而拉丁字符只需要一个字节就可以了,而中文需要两个字节。以前统一用char就会浪费内存原创 2020-10-10 11:26:48 · 293 阅读 · 0 评论 -
AQS
AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。AQS是一个用来构建锁和同步器的框架. AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。 AQS使用一个voliate int成员变量来表示同步状原创 2020-10-09 15:36:39 · 133 阅读 · 0 评论 -
面试题:HTTP和HTTPS
HTTP和HTTPS HTTPS是以安全为目标的通道,是HTTP的安全版。HTTPS的安全基础是TLS(TLS前身是SSL)SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。 HTTP和HTTPS的区别 HTTPS协议需要到CA申请证书。 HTTP是明文传输,HTTPS是具有安全性的SSL加密传输协议。 HTTP使用80端口,HTTPS是443端口。 HTTP连接比较简单,是无状态的。 HTTPS 内容加密 身份认证 数据完整性 证书包含的信息: 证书的颁发机构原创 2020-10-09 13:45:26 · 181 阅读 · 1 评论 -
复盘
JVM 说一下Java的垃圾回收机制 就是Java程序员在编写Java代码时不需要考虑内存管理。垃圾回收器通常是作为一个低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没用的对象进行清除和回收。 引用强、软、弱、虚 强: 软:软引用可用来实现内存敏感的高速缓存。 弱:只要垃圾回收器扫描到,就会回收。 虚:顾名思义,就是形同虚设的意思,虚引用并不会决定对象的生命周期,如果一个对象仅持有虚引用,那么他就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。主要用来跟踪对象被垃圾回收器回收的活动。原创 2020-09-18 20:12:59 · 437 阅读 · 0 评论 -
数据库面试
数据库 数据库引擎的理解 和大多数数据库不同,MySQL有一个存储引擎的概念,Oracle、SqlServer这些数据库都没有存储引擎。可以针对存储需求选择最优的存储引擎。数据库引擎有很多,InnoDB、MyISAM、CSV、memory。存储引擎是基于表的,而不是基于库的。所以存储引擎也可称为表的类型。 现在用的最多的是InnoDB和Myisam。MySQL的默认引擎是InnoDB。 InnoDB支持外键,支持事务,也可以说InnoDB是唯一支持外键的和事务的。提供了提交、回滚、崩溃回复能力的事务安原创 2020-09-18 20:11:23 · 99 阅读 · 0 评论 -
Java基础面试
String以及StringTable复盘 String有两种实例化的方式: String s1 = “atguigu”; //字面量的定义方式 String s2 = new String(“hello”); jdk8和jdk9中String底层变化 jdk8中String底层是用final修饰的char数组。 jdk9中是用final修饰byte数组。 为什么要做出这样的修改呢? 因为大部分字符串都是拉丁字符,而拉丁字符只需要一个字节就可以了,而中文需要两个字节。以前统一用char就会浪费内存原创 2020-09-18 20:11:01 · 156 阅读 · 0 评论 -
ArrayList和LinkedList
Arraylist:底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组。例如最坏的情况是删除第一个数组元素,则需要将第2至第n个数组元素各向前移动一位。而之所以称为动态数组,是因为Arraylist在数组元素超过其容量大,Arraylist可以进行扩容(针对JDK1.8数组扩容后的容量是扩容前的1.5倍),Arraylist源码中最大的数组容量是Integer.MAX_VALUE-8,对于空出的8位,目前..转载 2020-07-12 21:17:08 · 125 阅读 · 0 评论 -
异常
原创 2020-06-30 11:55:40 · 134 阅读 · 1 评论 -
int和Integer
原创 2020-06-30 11:44:28 · 120 阅读 · 0 评论 -
单例模式
1单例模式 1.1饿汉式单例 单例类在整个程序中只能有一个实例,这个类负责创建自己的对象,并确保只有一个对象被创建。 全局使用的类、会消耗很多系统资源的类,需要写成单例。 代码实现要点 私有化构造器 持有该类的属性 对外提供获取实例的静态方法 缺点 如果我们没有用到单例的对象,容易造成资源浪费; 对于反射和反序列化是不安全的;(为了防止反序列化,我们可以写一个readResolve()方法,但是我们无法防止反射) /** * 最简单的饿汉式 * 通过类加载机制,线程安全 */ public原创 2020-06-30 10:01:12 · 1514 阅读 · 0 评论 -
==和equals()的区别
总结的来说: 对于==,比较的时值是否相等。 如果时基本数据类型的变量,则比较其存储的“值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的内存地址。 equals(),属于Objec类,也就是说只有类才可以调用这个方法。 如果没有重写此方法,则比较的是对象的内存地址是否相等(也就是说指向的是否是同一个对象)。 有些类(String、Date)重写了equals()方法,比较...原创 2020-05-02 09:14:09 · 175 阅读 · 0 评论 -
面试必问——进程与线程的区别
每个程序员都会遇到的面试问题:谈谈进程和线程的区别 当你刚入职场时,无论你是用C++还是Java甚至只是应聘运维岗位,相信你都会遇到这个问题。 这是一个很基础的问题,但又是一个很考验人水平的问题。 说基础是因为每个学计算机的人都应该懂,进程线程是计算机的基础概念,是每个程序员时时刻刻都要接触的东西。 但这又是一个充满陷阱可以无限扩展和深入的一个问题。比如可以从操作系统知识扩展到计算机组成原理,可以...原创 2020-05-01 22:34:31 · 1576 阅读 · 1 评论 -
sleep()和wait()的区别
sleep()是Thread类中的方法,而wait()是Object类的方法。 sleep()会自动醒来进入就绪状态,而wait()如果没有别的线程唤醒是不会自动醒来的。 sleep()不会释放锁对象,而wait()会释放锁 ...原创 2020-04-28 14:11:35 · 167 阅读 · 0 评论