面试笔试
Hello World程序员
这个作者很懒,什么都没留下…
展开
-
<新浪微博笔试2>判断字符数组中所有字符只出现一次
<新浪微博笔试2>判断字符数组中所有字符只出现一次package lzl.bishi;import java.util.Scanner;public class Wb02 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); System.out.println(solve(str.t.原创 2020-09-13 23:23:43 · 965 阅读 · 0 评论 -
<新浪微博笔试1>倒置二叉树,输入为数组,层序输出
给定二叉树数组,构建二叉树,进行二叉树倒置 ,层序输出https://support.leetcode-cn.com/hc/kb/article/1194353/package lzl.bishi;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Wb1 { private static int[] ans; private static i原创 2020-09-13 23:21:58 · 981 阅读 · 0 评论 -
操作系统常见问题
进程与线程,他们的区别?进程控制块是什么1. 进程进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。2. 线程线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。3. 区别Ⅰ 拥有资源进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。Ⅱ 调度线程是独立调度的基本单位,在同一进程中,线程的切换不会引原创 2020-09-09 20:08:58 · 790 阅读 · 0 评论 -
逻辑地址 线性地址物理地址区别联系
逻辑地址(Logical Address)是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。线性地址(Linear Address)是逻辑地址原创 2020-08-22 09:04:38 · 1138 阅读 · 0 评论 -
索引是否覆盖例子
(1) select * from myTest where a=3 and b=5 and c=4; ----abc顺序abc三个索引都在where条件里面用到了,而且都发挥了作用(2) select * from myTest where c=4 and b=6 and a=3;where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样(3) select * from myTest where a=3 and c=7;a用到索引,b没有用,所以c是没有用到索...原创 2020-08-21 16:09:47 · 26298 阅读 · 0 评论 -
JAVA死锁发现解除
死锁代码。解除 加wait notify即可package nowcode.test;public class DeadLock { public static void main(String[] args) throws InterruptedException { final DeadLock dd1 = new DeadLock(); final DeadLock dd2 = new DeadLock(); Thread t1 =.原创 2020-08-18 00:05:38 · 71188 阅读 · 0 评论 -
JDK1.8默认垃圾回收器
java -XX:+PrintFlagsFinal -version |FINDSTR /i ":"可以看到1.8默认的是 UseParallelGCParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代)在JVM中是+XX配置实现的搭配组合:UseSerialGC 表示 “Serial” + "Serial Old"组合UseParNewGC 表示 “ParNew” + “Serial Old”UseConcMarkSweep原创 2020-08-17 20:04:31 · 9320 阅读 · 0 评论 -
面试官:说说高并发场景下秒杀系统的设计思路
一、概述秒杀系统之所以难做,是因为在极短的时间内涌入大量的请求,来同时访问有限的服务资源,从而造成系统负载压力大,甚至导致系统服务瘫痪以及宕机的可能。本文会介绍秒杀系统中存在的痛点以及针对这些点的优化思路。二、秒杀系统是什么如:12306的春节抢票、各大电商搞的定时抢购活动,如小米手机的在线抢购等,抢过火车票的同学都知道在放票的那一瞬间可能1s都不到,票就被抢购一空了。三、秒杀系统的难点短时间内高并发,系统负载压力大 竞争的资源有限,数据库锁冲突严重 避免对其他业务的影响四、.转载 2020-07-28 19:55:12 · 600 阅读 · 0 评论 -
java多态、动态绑定
如果是在编译时期解析,那么就称之为静态绑定(static binding),如果方法的调用是在运行时期解析,那就是动态绑定(dynamic binding)或者延迟绑定(late binding)。多态使得父类型的引用变量可以引用子类型的对象。如果调用子类型对象的一个虚方法(非private,final or static),编译器将无法找到真正需要调用的方法,因为它可能是定义在父类型中的方法,也可能是在子类型中被重写(override)的方法,这种情形,只能在运行时进行解析,因为只有在运行时.原创 2020-07-25 20:58:29 · 601 阅读 · 0 评论 -
给定一个符合linux规范的目录路径,请给出简化后的路径
package lzl.bishi;import java.util.ArrayList;import java.util.List;public class bd723 { public static void main(String[] args) {// 给定一个符合linux规范的目录路径,请给出简化后的路径。// 注意,顶层路径只能是'/',除了顶层路径外,不应该有结尾的`/`符号。// 例如 "/home/./a/../b/"应.转载 2020-07-23 11:52:04 · 513 阅读 · 0 评论 -
limit offeset查询分页mysql优化
-- 传统limit,文件扫描[SQL]SELECT * FROM tableName ORDER BY id LIMIT 500000,2;受影响的行: 0时间: 5.371s-- 子查询方式,索引扫描[SQL]SELECT * FROM tableNameWHERE id >= (SELECT id FROM tableName ORDER BY id LIMIT 500000 , 1)LIMIT 2;受影响的行: 0时间: 0.274s-- JOIN分页方式.原创 2020-07-21 08:46:57 · 640 阅读 · 0 评论 -
reentrantlock以及countdownlatch底层实现AQS
原创 2020-07-20 10:05:56 · 5529 阅读 · 0 评论 -
MQ消息队列常见问题
翻译 2020-07-19 15:07:47 · 309 阅读 · 0 评论 -
哈夫曼编码笔试题
假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。(这里假定左节点的值小于右节点的值)长度计算为(2+3)*4+(4+6+7)*3+15*1=86所以B的编码(也就是3)为1011...原创 2020-07-17 19:50:05 · 4596 阅读 · 0 评论 -
linux服务器高占用问题分析诊断总结
原创 2020-07-15 21:44:43 · 2976 阅读 · 0 评论 -
IDEA-JAVA-debug调试总结,多线程
单步进入方法内,自己写的进入jdk内置方法不进方法原创 2020-07-15 16:20:04 · 445 阅读 · 0 评论 -
构造链表,求和反转
还是要多练习输入输出啊。。。脱离leetcode就GG了。难受的呀老哥package sjms;public class testjd { static class ListNode{ ListNode next; int data; ListNode(int data){ this.data=data; } // 添加新的结点 public void add(int .原创 2020-07-15 14:58:00 · 297 阅读 · 0 评论 -
select,poll,epoll
文件描述符fd文件描述符(File descriptor)是计算机科学中的一个术语,是一个用于表述指向文件的引用的抽象化概念。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。————————————————1.ja...转载 2020-07-14 15:09:22 · 277 阅读 · 0 评论 -
mysql 使用b树原因
聚簇索引和非聚簇索引都是b+树结构这俩的唯一区别就是聚簇索引叶子节点存放行信息,非聚簇索引叶子节点只存放索引值和主键id值转载 2020-07-13 22:39:17 · 418 阅读 · 0 评论 -
生产者消费者java实现
https://www.b2bchain.cn/6711.html生产者,消费者解耦 BUFFER负责处理 wait notifypackage sjms;import java.util.LinkedList;import java.util.Queue;public class product_custom { public static void main(String[] args) { buffer b=new buffer(); cu.原创 2020-07-13 16:57:32 · 263 阅读 · 0 评论 -
JAVA设计模式-观察者,发布订阅
package sjms;import java.util.ArrayList;import java.util.List;//观察者 发布订阅模式public class fbdy { //观察者接口 public interface Watcher { public void update(String str); } //观察者实现 public static class ConcreteWatcher implements Watc.原创 2020-07-13 10:35:14 · 324 阅读 · 0 评论 -
单例模式
静态内部类 利用的是classloader机制class Singleton{ private static Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton; }}volatile+双重检验锁 (禁止jvm指令重排序)synchronized修饰的同步块可是要原创 2020-07-12 16:28:07 · 215 阅读 · 0 评论 -
JAVA类加载,双亲委托机制
初始化顺序先后顺序是:静态成员变量、成员变量、构造方法。原创 2020-07-12 15:22:53 · 328 阅读 · 0 评论 -
反射,泛型擦除
import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;public class fxcc { /** * * ArrayList<Integer>的一个对象,在这个集合中添加一个字符串数据,如何实现呢? * 泛型只在编译期有效,在运行期会被擦除掉*/ public static void main(String[] args) throws .原创 2020-07-12 15:06:31 · 279 阅读 · 0 评论 -
什么是索引回表,如何避免(索引覆盖)
聚簇索引* 如果表设置了主键,则主键就是聚簇索引 * 如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索引 * 以上都没有,则会默认创建一个隐藏的row_id作为聚簇索引其他 非聚簇表中有四条记录: 1, shenjian, m, A 3, zhangsan, m, A 5, lisi, m, A 9, wangwu, f, B聚集索引(存储行记录) 普通索引(叶子节点存储聚簇索引值)...原创 2020-07-12 09:27:30 · 14789 阅读 · 4 评论 -
JAVA线程池分类,参数,执行方法
java线程池创建各个参数的作用线程池可以通过ThreadPoolExecutor来创建,我们来看一下它的构造函数:JAVA线程池执行流程,即对应execute()方法:提交一个任务,线程池里存活的核心线程数小于线程数corePoolSize时,线程池会创建一个核心线程去处理提交的任务。如果线程池核心线程数已满,即线程数已经等于corePoolSize,一个新提交的任务,会被放进任务队列workQueue排队等待执行。当线程池里面存活的线程数已经等于coreP..原创 2020-07-11 20:28:36 · 731 阅读 · 0 评论 -
BST,AVL树,红黑树
HASHMAP或者TREEMAP 使用红黑树原因用红黑树不BST BST极限会退化为链表不用AVL树 条件太严格 红黑树的跑平衡条件宽松,节点操作变动比较小,写性能比较高BSTAVL树红黑树红黑树 O(logn)...原创 2020-07-11 20:11:35 · 2045 阅读 · 0 评论 -
JAVAgc图解
什么时候触发GC(1)程序调用System.gc时可以触发(2)系统自身来决定GC触发的时机(根据Eden区和FromSpace区的内存大小来决定。当内存大小不足时,则会启动GC线程并停止应用线程)GC又分为 minor GC 和 Full GC (也称为 Major GC )Minor GC触发条件:当Eden区满时,触发Minor GC。Full GC触发条件:a.调用System.gc时,系统建议执行Full GC,但是不必然执行b.老年代空间不足c.方原创 2020-07-11 13:43:19 · 750 阅读 · 0 评论 -
可见性与原子性java
可见性i++为例子 原子性的保证: (可见性保证原子性的前提 )内部已实现了 volatile重量级依次递增volatile < atomic<synchronize依次保证volatile读写可见性,禁重排 atomic读写原子性 synchronize代码块/方法原子性也可以使用 synchronize 重量级强制保证原子性...原创 2020-07-11 13:35:55 · 328 阅读 · 0 评论 -
JAVA面试提纲
linkedhashmaptreemap按照key排序 红黑树线程池分类4种创建线程池方法 参数lock写饥饿threadlocal threadmap(底层存储) 弱引用 强引用 内存泄露原子性 i++非原子性 需要atom开头的类可见性 volatile...原创 2020-07-11 16:52:24 · 366 阅读 · 0 评论 -
jvm内存模型图解值类型对象类型
jvm内存模型值类型对象类型图转自https://www.bilibili.com/video/BV12t411u726原创 2020-07-11 12:06:35 · 332 阅读 · 0 评论 -
面试-负载因子值大小,对HashMap影响
负载因子的大小决定了HashMap的数据密度。负载因子越大数据密度越大,发生碰撞的几率越高,数组中的链表越容易长,造成查询或插入时的比较次数增多,性能会下降。负载因子越小数据密度越小,发生碰撞的几率越小,数组中的链表也就越短,查询和插入时比较的次数也越小,性能会更高,就越容易触发扩容,会浪费一定的内存空间。经常扩容也会影响性能,建议初始化预设大一点的空间。按照其他语言的参考及研究经验,会考虑将负载因子设置为0.7~0.75,此时平均检索长度接近于常数。...原创 2020-07-08 10:54:30 · 729 阅读 · 0 评论 -
Java 面试的 96 个高频知识点[转]
Java 面试高频知识点整理Java 面试的 96 个高频知识点排序算法 9P1:排序算法的分类排序算法可以分为内部排序和外部排序,在内存中进行的排序称为内部排序,当要排序的数据量很大时无法全部拷贝到内存,需要使用外存进行排序,这种排序称为外部排序。内部排序包括比较排序和非比较排序,比较排序包括插入排序、选择排序、交换排序和归并排序,非比较排序包括计数排序、基数排序和桶排序。其中插入排序又包括直接插入排序和希尔排序,选择排序包括直接选择排序和堆排序,交换排序包括冒泡排序和快速排序。P2:直接原创 2020-07-07 18:42:28 · 947 阅读 · 0 评论 -
JAVA剑指OFFER个人总结
原文地址https://www.b2bchain.cn/5154.html下方查看可能有格式问题,推荐查看原文面试题03. 数组中重复的数字面试题04. 二维数组中的查找面试题05. 替换空格面试题06. 从尾到头打印链表面试题07. 重建二叉树面试题09. 用两个栈实现队列面试题10- I. 斐波那契数列面试题10- II. 青蛙跳台阶问题面试题11. 旋转数组的最小数字面试题12. 矩阵中的路径面试题13. 机器人的运动范围面试题14- I. 剪绳子面试题14- .原创 2020-07-04 10:04:04 · 25120 阅读 · 1 评论 -
JAVA实现 LRU
//运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 //// 获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。 //写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在//写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。.原创 2020-07-01 00:03:30 · 269 阅读 · 0 评论 -
JAVA面试问题总结-更新整理中
当某个线程抛出OutOfMemoryError时,其他线程有可能不受影响try块中如果有System.exit(0);代码就会不执行finally块代码不管是堆内存溢出,或者栈内存溢出,其余线程都会继续工作无法强制垃圾回收器立即执行system.gc可以提醒垃圾回收执行,不能强制sleep是线程类(Thread)的方法,wait是Object类的方法;sleep不释放对象锁,wait放弃对象锁;sleep暂停线程、但监控状态仍...原创 2020-06-24 17:27:35 · 168 阅读 · 0 评论