大厂面试题
The Great Ant
做一个功成名就的人
展开
-
2021-04-26
synchronized与Lock的区别1)Synchronized能实现的功能Lock都可以实现,而且Lock比Synchronized更好用,更灵活。2)Synchronized可以自动上锁和解锁;Lock需要手动上锁和解锁原创 2021-04-26 22:21:04 · 59 阅读 · 0 评论 -
2021-04-25
悲观锁和乐观锁1.执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。2.执行操作前假设当前操作不会被打断(乐观)。基于这个假设,我们在做操作前不会锁定资源,万一发生了其他操作的干扰,那么本次操作将被放弃。Redis使用的就是乐观锁。...原创 2021-04-25 22:53:55 · 107 阅读 · 0 评论 -
2021-04-02
大厂面试题——如何判断一个对象是否存活?(或者GC对象的判定方法)判断一个对象是否存活有两种方法:引用计数法可达性算法(引用链法)原创 2021-04-02 22:24:49 · 42 阅读 · 0 评论 -
2021-04-02
大厂面试题——Union与Union all区别1)union会将联合的结果集去重,效率较union all差2)union all不会对结果集去重,所以效率高原创 2021-04-02 22:23:42 · 36 阅读 · 0 评论 -
2021-04-02
大厂面试题——java中垃圾收集的方法有哪些?1)引用计数法: 应用于:微软的COM/ActionScrip3/Python等a) 如果对象没有被引用,就会被回收,缺点:需要维护一个引用计算器2)复制算法: 年轻代中使用的是Minor GC,这种GC算法采用的是复制算法(Copying)a) 效率高,缺点:需要内存容量大,比较耗内存b) 使用在占空间比较小、刷新次数多的新生区3)标记清除: 老年代一般是由标记清除或者是标记清除与标记整理的混合实现a) 效率比较低,会差生碎片。4)标记压原创 2021-04-02 22:22:42 · 46 阅读 · 0 评论 -
2021-04-01
大厂面试题(数据库)——格式化产品名称写一个 SQL 语句报告:product_name 是小写字母且不包含前后空格sale_date 格式为 (‘YYYY-MM’)total 是产品在本月销售的次数返回结果以 product_name 升序 排列,如果有排名相同, 再以 sale_date 升序 排列。+--------------+--------------+----------+| product_name | sale_date | total |+----------原创 2021-04-01 22:19:08 · 257 阅读 · 0 评论 -
2021-03-31
大厂面试题——请解释Java异常处理机制相关的5个关键字try:尝试执行可能发生异常的代码。catch:尝试捕获try部分发生的异常。可以存在多个catch,如果多个catch的异常类型有继承关系,那么遵循子上父下。finally:不管是否发生异常都要执行的代码放在finally块中。throws:方法声明时显示抛出异常,指定该方法可能抛出的异常类型列表。throw:手动抛出异常,可以抛出系统预定异常,也可以抛出用户自定异常,而且用户自定义异常必须用throw语句抛出,可以代替return语句结束原创 2021-03-31 22:04:31 · 53 阅读 · 0 评论 -
2021-03-31
大厂面试题——Java中的IO流的四大基类是什么,请列出常用的IO流类型(至少5个)所有的IO流都是从以下四个抽象基类,超级父类中分出来的:(1)字节输入流:InputStream(2)字节输出流:OutputStream(3)字符输入流:Reader(4)字符输出流:Writer可以延伸出很多IO流,例如:和文件相关(1)文件字节输入流:FileInputStream(2)文件字节输出流:FileOutputStream(3)文件字符输入流:FileReader(4)文件字符输出流:原创 2021-03-31 21:59:03 · 110 阅读 · 0 评论 -
2021-03-30
大厂面试题——手写冒泡排序例如:** * 冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1) */public class BubbleSort { public static void bubbleSort(int[] data) { System.out.println("开始排序"); int arrayLength = data.length; for (int i = 0; i < arrayLength - 1; i++) {原创 2021-03-30 22:00:00 · 56 阅读 · 0 评论 -
2021-03-30
大厂面试题——手写数组的二分查找例如:class Exam2{ public static void main(String[] args){ int[] arr = {2,5,7,8,10,15,18,20,22,25,28};//数组是有序的 int value = 18;//找到18对应的下标值 int index = -1; int left = 0; int right = arr.length - 1; int mid =原创 2021-03-30 21:58:45 · 45 阅读 · 0 评论 -
2021-03-29
大厂面试题——Equals和==区别== : 如果比较的是基本数据类型,那么比较的是变量的值 如果比较的是引用数据类型,那么比较的是地址值(两个对象是否指向同一块内存)equals: 如果没重写equals方法比较的是两个对象的地址值。 如果重写了equals方法后我们往往比较的是对象中的属性的内容equals方法是从Object类中继承的,默认的实现原创 2021-03-29 22:17:12 · 48 阅读 · 0 评论 -
2021-03-29
大厂面试题——HhashMap底层源码,数据结构JDK1.8之前Put方法 :七上: 后添加的元素 会添加到旧元素的前面 旧元素 变为 新元素的子节点1.创建完对象 HashMap h = new HashMap(); 饿汉式不管需不需要都要开辟空间 //开辟了一个长度为16的 Entry类型的数组 //定义了阈值 12 2.添加数据 2.1key==null 将数据添加到下标为0的位置 2.2key!=null 2.2.1 第一次添加 直接填入原创 2021-03-29 22:10:28 · 45 阅读 · 0 评论 -
2021-03-28
大厂面试题——简述Java内存分配与回收策略以及Minor GC和Major GC(full GC)内存分配:栈区:栈分为java虚拟机栈和本地方法栈堆区:堆被所有线程共享区域,在虚拟机启动时创建,唯一目的存放对象实例。堆区是gc的主要区域,通常情况下分为两个区块年轻代和年老代。更细一点年轻代又分为Eden区,主要放新创建对象,From survivor 和 To survivor 保存gc后幸存下的对象,默认情况下各自占比 8:1:1。方法区:被所有线程共享区域,用于存放已被虚拟原创 2021-03-28 20:55:26 · 71 阅读 · 0 评论 -
2021-03-27
大厂面试题——Java自带哪几种线程池?文章目录大厂面试题——Java自带哪几种线程池?1)newCachedThreadPool2)newFixedThreadPool3)newSingleThreadExecutor4)newScheduleThreadPool1)newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。这种类型的线程池特点是:工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MA原创 2021-03-27 19:53:45 · 62 阅读 · 0 评论 -
2021-03-27
大厂面试题—— Final、Finally、Finalize final:修饰符(关键字)有三种用法:修饰类、变量和方法。修饰类时,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。修饰变量时,该变量使用中不被改变,必须在声明时给定初值,在引用中只能读取不可修改,即为常量。修饰方法时,也同样只能使用,不能在子类中被重写。 finally:通常放在try…catch的后面构造最终执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都原创 2021-03-27 19:51:46 · 44 阅读 · 0 评论 -
2021-03-26
大厂面试题——TreeSet和HashSet区别区别:HashSet是采用hash表来实现的。其中的元素没有按顺序排列,add()、remove()以及contains()等方法都是复杂度为O(1)的方法。TreeSet是采用树结构实现(红黑树算法)。元素是按顺序进行排列,但是add()、remove()以及contains()等方法都是复杂度为O(log (n))的方法。它还提供了一些方法来处理排序的set,如first(),last(),headSet(),tailSet()等等。...原创 2021-03-26 22:15:06 · 57 阅读 · 0 评论 -
2021-03-26
大厂面试题—— HashMap和HashTable区别 线程安全性不同HashMap是线程不安全的,HashTable是线程安全的,其中的方法是Synchronize的,在多线程并发的情况下,可以直接使用HashTabl,但是使用HashMap时必须自己增加同步处理。 是否提供contains方法HashMap只有containsValue和containsKey方法;HashTable有contains、containsKey和containsValue三个方法,其中c原创 2021-03-26 22:10:40 · 62 阅读 · 0 评论 -
2021-03-25
大厂面试题——把如下信息添加到Map中,并遍历显示,请正确指定泛型public class Test3 { @Test public void test() { //创建map表 HashMap<String, ArrayList<String>> map = new HashMap<>(); //创建list表 ArrayList<String> arr = new Arra原创 2021-03-25 17:47:13 · 118 阅读 · 0 评论 -
2021-03-25
大厂面试题——有一个字符串String abc = “342567891”,请写程序将字符串abc进行升序,可以使用JDK API中的现有的功能方法。public class Test2 { @Test public void test(){ String abc = "342567891"; //转换成achar[]数组 char[] c = abc.toCharArray(); //调用方法快速排序 Arr原创 2021-03-25 17:44:27 · 302 阅读 · 0 评论 -
2021-03-25
大厂面试题——请编写代码使用把一个字符串反转,例如:HELLO1234,反转后:4321olleh。答案一:public class Test { @org.junit.Test public void test(){ String str = "HELLO1234"; //大写变小写 String s1 = str.toLowerCase(); StringBuilder bul = new StringBuilder(s原创 2021-03-25 17:43:42 · 108 阅读 · 0 评论 -
2021-03-19
B站面试题之Java数组编程题1、编程题1冒泡排序:public static void bubbleSort(int[] arr) { for (int i = 1; i < arr.length; i++) { for (int j = 0; j < arr.length-i; j++) { if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1]原创 2021-03-19 22:23:15 · 132 阅读 · 0 评论 -
2021-03-24
大厂面试题——请编写代码把一个GBK的文本文件内容读取后存储到一个UTF-8的文本文件中。public class Test { @org.junit.Test public void test() throws IOException { //使用基本IO流来完成 FileInputStream in= new FileInputStream("test_gbk.txt"); InputStreamReader r = new InputStrea原创 2021-03-24 22:07:24 · 45 阅读 · 0 评论 -
2021-03-24
大厂面试题——synchronized关键字的用法?synchronized关键字是解决线程安全问题的方式之一。共有两种用法:1、同步代码块语法格式:synchronized(锁对象){需要加锁的代码}注意锁:(1)任意类型的对象都可以当做锁(2)多个线程之间共用一把锁,即多个线程之间共用同一个锁对象(3)同步代码块的范围:不能太大,太小2、同步方法语法结构:synchronized 【修饰符】 返回值类型 方法名(【形参列表】)【抛出异常列表】同步方法的锁对象:静态方法:原创 2021-03-24 22:05:26 · 48 阅读 · 0 评论 -
2021-03-23
大厂面试题——手写单例模式(饿汉式和懒汉式)1、饿汉式:不管是否需要对象 都先把对象创建出来public class Singleton { //构造器私有 直接提供 该类的对象 public static final Singleton SINGLETON = new Singleton(); private Singleton(){ } }2、懒汉式:当真正需要的时候 才去创建对象class Singleton{ //对变原创 2021-03-23 22:03:07 · 51 阅读 · 0 评论