
面试相关
文章平均质量分 79
是菜鸟不是咸鱼
是菜鸟不是闲鱼
展开
-
【面经分析】mysql建立索引的几大原则、List,Set,Map、ConcurrentHashMap的实现原理
1、项目的超卖问题如何解决?首先超卖问题的出现有两个原因,第一个是一个用户同一时刻发出多次请求,当时库存是够的,然后就出现了一个用户秒杀多件商品;第二个是数据库底层逻辑没有对库存数量是否>0进行判断,从而导致库存数量减到了负数。因此解决方法有两个,在后台的秒杀表中,对用户id和商品id设置一个唯一索引,防止一个用户同时秒杀多件商品;第二就是在sql语句的逻辑中,对库存数量count进行判断是否>0才减库存。2、排序算法有哪些?快排、归并、堆、冒泡、选择、希尔、桶、计数排序、基数原创 2021-09-08 21:29:12 · 439 阅读 · 0 评论 -
【面经分析】消息中间件、Redis的应用场景、concurrent包、线程池的七大参数
1、消息中间件什么是消息中间件?利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式的环境下扩展进程间的通信。2、Redis的应用场景参考链接:https://zhuanlan.zhihu.com/p/29665317首先介绍redis的特点:读写性能优异;持久化;数据类型丰富;(string、hashmap、list、sortedset、set)单线程;数据自动过期;发布订阅;分布式然后根据每个特点原创 2021-09-03 15:30:02 · 412 阅读 · 0 评论 -
【面经分析】虾皮
1、数组、链表、栈、堆比较数组主要用于查询操作比较多的情况,可以直接通过下标进行定位链表主要用于删除、修改、添加操作比较多的情况栈的特点是先进后出堆分为小根堆、大根堆,可以用来构建优先队列2、什么是哈希表哈希表是基于哈希函数建立的一种查找表,存储的主要是K-V键值对,哈希函数为 映射位置 = F(key),自变量为key,因变量为entry数组下标。如何处理哈希冲突?① 开放定址法其中di有三种取法:线性探测再散列、平方探测再散列、随机探测再散列② 链地址法;将该位置冲突的数据原创 2021-08-17 22:30:31 · 208 阅读 · 0 评论 -
【面试相关】synchronized、编程判断大小端、聚集索引和非聚集索引、IO多路复用
1、JVM中锁的关键字1.1 synchronized① 作用范围:代码块方法(修饰普通方法锁的对象默认是当前对象this,修饰静态方法默认锁的是当前类)类(修饰类时,所有线程需要的锁是同一把)② 是如何保证线程安全的?加锁和释放锁的原理可重入原理:加锁次数计数器可见性原理:内存模型+happens-before③ 重量级锁,如何优化?锁的升级:无锁—>偏向锁—>自旋锁—>重量级锁锁的优化技术:锁粗化、锁消除、轻量级锁、偏向锁、适应性自旋原创 2021-08-11 10:12:55 · 102 阅读 · 0 评论 -
【面试相关】公平锁和非公平锁、Mysql的慢查询优化方式、BIO、AIO、NIO
1、BIO、AIO、NIOBIO (Blocking I/O):同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成(一直在水壶旁边等着)NIO (New I/O):同时支持阻塞与非阻塞模式。(老板叫了个小弟来不断轮询水是否开)AIO ( Asynchronous I/O):异步非阻塞I/O模型。(水烧开了,水壶自动通知)2、Mysql的慢查询优化方式https://blog.youkuaiyun.com/qq_35571554/article/details/82800463首先开启慢查原创 2021-08-11 10:11:25 · 299 阅读 · 0 评论 -
【面经】MYSQL的锁、可重复读是怎么实现的、线程池
1、MySQL的锁参考:https://blog.youkuaiyun.com/qq_40378034/article/details/90904573全局锁给整个数据库实例加锁。例如全局读锁:Flush tables with read lock。应用场景:全库逻辑备份,将整个库的每个表都select出来存成文本。表级锁两种:表锁、元数据锁。表锁:lock tables…read/write。MDL(元数据)锁:当对一个表做增删改查操作的时候,加MDL读锁;当要对表结构做变更操作的时候,加MDL写锁。原创 2021-08-08 15:15:18 · 540 阅读 · 0 评论 -
【面经】RESTful风格、SpringMVC及其优势、SpringSecurity
1、RESTful风格一种软件架构风格、设计风格。主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更容易实现缓存等机制。每一个URI代表一种资源‘;客户端和服务器之间,传递这种资源的某种表现层;客户端通过四个HTTP动词,对服务器端资源进行操作,来实现“表现层状态转换”2、测试用例测试工具QMetry、TestRail、JIRA、qTest3、重载&重写重载:- 方法名相同- 参数不同(类型、个数、顺序)重写:- 两同:方法名相同、参数列表原创 2021-08-08 09:34:04 · 212 阅读 · 0 评论 -
用户态和内核态、双亲委派机制
1、用户态和内核态CPU状态内核态——运行操作系统程序,操作硬件;用户态——运行用户程序指令划分特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机。非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)特权级别R0相当于内核态,R3相当于用户态;不同级别能够运行不同的指令集合;状态转换用户态—>内核态:唯一途径是通原创 2021-06-16 22:19:34 · 121 阅读 · 0 评论 -
【面试】String的创建、线程池、深拷贝浅拷贝
1、String的两种创建方式以及存储方式第一种:双引号方式x和y都是指向同一个内存地址,他们的引用都是指向方法区的同一个内容。同一个String字面值无论被创建多少次,始终只有一个内存地址被分配,之后的都是这个String的拷贝,在java中称作“字符串驻留”。这种方式创建的时候首先会查看字符串池中是否已经存在,存在就直接返回PermGen中的该String对象,否则就会创建一个新的String对象,之后再放进字符串池中。String x = "abcd";String y = "abcd原创 2021-06-16 18:51:19 · 203 阅读 · 0 评论 -
【大厂高频算法题】阿里后端春招
一、链表专题1、反转链表(剑指offer 24)分析:整个链表翻转有两种方法——头插法 和 指针反转两者都要注意一个置空的操作,避免出现环**头插法图解:**//头插法class Solution { public ListNode reverseList(ListNode head) { if(head == null || head.next == null){return head;} ListNode pre = new ListN原创 2021-05-17 10:21:39 · 180 阅读 · 0 评论 -
【MySQL】MVCC(多版本并发控制)、RR、RC、MySQL中的日志
参考博客:正确的理解MySQL的MVCC及实现原理一、MVCC是什么?多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。说人话:维持一个数据的多个版本,使得读写操作没有冲突。(理想概念)凡是涉及到“写”的并发操作,就可能有线程安全问题要解决。(注意上边是读-写操作)数据库的并发操作有三种:读-读:不存在任何问题,也不需要并发控制;读-写:有线程安全问题,可能会造成事务隔离性问题,例如脏读、幻读、不可重复读;写-写:原创 2021-05-07 17:14:02 · 460 阅读 · 1 评论 -
【多线程】生产者消费者问题(Synchronized和Lock版本实现)
一、Synchronized和Lock【追根溯源】Sychronized 是Java内置的关键字,而Lock是一个类【自动挡与手动挡】Sychronized 自动释放锁,而Lock是手动释放(unlock)。(假如没有手动释放,就会造成死锁)【锁的状态】Sychronized 不能获取锁的状态,Lock可以;【在一棵树上吊死】Sychronized 当一个线程获取资源的锁,那么另外想要该资源的线程会一直等待,而Lock有tryLock,超时放弃等待;【锁的量】Sychronized 适用于锁少量原创 2021-05-05 19:31:06 · 170 阅读 · 0 评论 -
【面试题分析-多线程】线程池原理与参数
1、线程池的优点是什么?降低资源损耗。在线程池中创建线程,该线程的任务结束后,并非立刻销毁,而是存放在线程池中,该线程可以重复利用,从而减少创建和销毁线程的开销。提高响应速度。 当一个任务到达时,可以直接用线程池的线程执行,而非新创建;提高线程的可管理性。 线程是稀缺资源,假如无限制地创建线程,不仅会消耗系统资源,而且会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。2、线程池的原理是什么?当一个任务到达时,线程池的处理流程如下:a、查看核心线程池(CorePoolSize)是否原创 2021-05-05 16:32:30 · 127 阅读 · 0 评论 -
【面试题分析-计网】TCP和UDP
1、TCP与UDP的区别根据不同应用的不同要求,传输层提供了两种传输协议——TCP和UDP。首先要知道一点:TCP是保证可靠、无差错的传输。2、TCP是如何保证可靠传输的?(6点)三次握手建立连接。数据编号与确认:TCP给发送的每个包进行编号,接收方对数据包进行排序,将有序数据传送给应用层。流量控制与拥塞控制:滑动窗口实现流量控制,四种算法实现拥塞控制,防止包丢失。四种拥塞算法:慢开始、拥塞避免、快重传、快恢复。——————————————————————————————TCP连接原创 2021-05-05 16:22:04 · 163 阅读 · 0 评论 -
【面试题分析-多线程】关于Synchronized、volatile
1、Synchronized介绍以及如何使用?synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的⽅法或者代码块在任意时刻只能有⼀个线程执⾏。早期synchronized属于重量级锁,效率低,因为监视器锁是依赖底层操作系统的Mutex Lock来实现的,Java的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换也需要从用户态转换为内核态,转换的时间成本高。使原创 2021-05-03 20:33:23 · 210 阅读 · 2 评论 -
【面试题分析-计网】HTTP2.0、url输入浏览器到服务端处理全过程、https中的密钥交换过程
第一题:HTTP2.0对HTTP1.1来讲有什么改进?多路复用: 允许同时通过单一的HTTP2.0连接发起多重的请求-响应消息,因此可以很容易实现多流并行而不用依赖建立多个TCP连接。因为HTTP2.0将HTTP协议通信的基本单位缩小为一个个的帧,这些帧对应着逻辑流中的消息,并行地在同一个TCP连接上双向交换消息。而在1.1中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。(例如说,HTTP1.1每次只能请求一个资源,响应一个请求,而HTTP2.0可以发起原创 2021-04-30 16:02:02 · 284 阅读 · 1 评论 -
【JVM】如何区分新生代和老年代?空间分配担保?CMS回收过程?
1、如何区分新生代和老生代?划分比例?参考书籍:《深入理解Java虚拟机》在经典分代的设计下,新生对象通常会被分配在新生代中,少数情况下(如对象大小超过一定阈值)也可能会直接分配在老年代。新生代Eden区和两个survivor区的比例是8:1:1——参数:-XX:Survivor-Ratio=82、空间分配担保?3、为什么新生代用复制,老年代用标记清除或者标记整理Q1:为什么新生代用标记-复制?A1:因为新生代中的对象熬不过第一轮收集,存活的对象较少。Q2:为什么老年代用标记-清除/标记原创 2021-04-28 20:23:32 · 1014 阅读 · 0 评论 -
【MySQL】并发事务带来的问题?事务隔离级别?联合查询?两种丢失更新?解决幻读
1、并发事务可能带来的问题多个用户对同一数据进行操作,可能会:1、读 脏数据: 事务A对数据进行了修改,而修改还没有提交时,事务B读到了这个未修改前的数据;2、丢失修改: 事务A对数据进行了修改,而修改还没有提交时,事务B读到了这个未修改前的数据,并对其进行修改,此时A的修改操作被B的操作覆盖,从而丢失;3、不可重复读: 一个事务内多次读取同一数据,读到的结果不一样;因为在事务A还没有结束时,事务B修改了数据,A第二次读数据结果和第一次不一样。4、幻读: 和不可重复读有点像,一个事务多次读取同一数原创 2021-04-28 17:01:50 · 260 阅读 · 0 评论 -
【面试题分析】对象的创建过程?为什么要有垃圾分代收集的机制?
【JVM】1、对象从创建到消亡的过程简单来说,首先创建对象经过5个步骤:1、类加载检查;2、分配内存;3、初始化零值;4、设置对象头;5、执行init()方法对象消亡需要进行垃圾回收,而垃圾回收又需要进行GC Root可达性分析。展开来说,先说对象的创建。然后来说对象的消亡判断:主要是两种方法:1、引用计数法: 给对象添加一个引用计数器,当被引用了,那么引用次数+1;当引用失效,计数器就-1.当计数器为0时,该对象就不被使用了。2、可达性分析算法通过一系列的称为“GC Roots”的对象作原创 2021-04-27 17:03:47 · 105 阅读 · 0 评论 -
【面试题分析】第九篇 顺丰科技安卓客户端面经【2轮技术+1轮HR面】(21届秋招)
参考面经:顺丰科技安卓客户端面经【2轮技术+1轮HR面】(21届秋招)第一题:http和https的区别(老HTTP了)第二题:Http request的几种类型(HTTP请求报文的常用方法)第三题:GET 和 POST 的区别——————————————————————————————————————————第1、2、3题一起回答:这三个题主要就是考察HTTP。HTTP主要的考点有:请求头内的字段、请求方法、get和post、https、版本。第一题:从四个方面回答——https是什么、原创 2021-04-16 21:01:18 · 490 阅读 · 0 评论 -
【面试题分析】第八篇 百度IOS客户端面经(21 届秋招)|快手客户端开发面经(21 届秋招)
参考面经:百度IOS客户端面经(21 届秋招)第一题:单例模式参考链接:【狂神说Java】JUC并发编程最新版通俗易懂饿汉单例模式:DCL懒汉单例模式:原创 2021-04-13 16:25:30 · 432 阅读 · 0 评论 -
【面试题分析】第七篇 滴滴|安卓客户端|面经(21 届秋招)|2021|
参考面经:滴滴|安卓客户端|面经(21 届秋招)|2021|原创 2021-04-10 21:49:30 · 337 阅读 · 0 评论 -
【面试题分析】第六篇 叠纸游戏|客户端开发|面经(21 届秋招)|2021|
第一题:设计模式(没做过项目,不太懂这个)参考链接:java开发中的常用的设计模式设计模式分为三大类:1、创建型模式,五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;2、结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。3、行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。第二题:子线程与主线程之间的通信第三题:线程安全问题《j原创 2021-04-08 22:39:01 · 3371 阅读 · 0 评论 -
【面试题分析】第六篇 360 |安卓客户端|面经【2 轮技术 + 1 轮 HR 面】(21 届秋招)|2021|
【第一题】有哪四种访问控制的类型,它们有什么区别参考链接:java四种访问控制权限的总结场景:内部访问、继承关系 、同包、不同包public: 无限制protected: 可以类内,可以同包,跨包后可以只能在子类里通过子类对象访问,不能通过父类,其他类也不行default: 可以类内,子类访问必须同包,不能跨包private: 只能类内第二题:“==”和“equals”的区别1、“==”是运算符,equals是方法;场景:java基本类型、比较包装类型、比较String类型、比较对象2原创 2021-04-08 15:06:53 · 356 阅读 · 3 评论 -
【面试题分析】第五篇 腾讯客户端开发面经(21 届秋招)
参考面经:添加链接描述第一题:进程和线程的区别(考了无数次了)进程:操作系统资源分配的基本单位;线程:调度的基本单位;第二题:进程通信的方式(也是考了无数次了)八种。信号、信号量、消息队列、无名管道、有名管道、高级管道、共享内存、套接字第三题:多线程的实现方式(考了很多次)参考链接:java多线程的6种实现方式详解多线程的实现方式主要有两种:继承Thread类、实现Runnable接口继承Thread类: 通过JDK提供的Thread类,重写Thread类的run方法即可,那么当线程启动的原创 2021-04-06 16:23:33 · 2572 阅读 · 0 评论 -
【面试题分析】第四篇(字节跳动|客户端开发|两次一轮游(21 届秋招)|2021|)
参考面经:字节跳动|客户端开发|两次一轮游(21 届秋招)|2021|1、http和https的区别这题之前一篇面经写了。【面试题分析】第二周 拼多多|客户端开发|秋招|面经【2轮技术+1轮HR面】|2021(3.18-3.25)2、浏览器中输入域名(url)后发生了什么第一篇面经写了:【面试题分析】第一周 美团金融安卓客户端面经【 3 轮技术面 + 1 轮 HR 面】(21 届秋招)a、DNS域名解析;b、TCP连接;c、HTTP请求;d、接收响应结果;e、浏览器解析HTML;f、浏原创 2021-03-31 16:00:18 · 176 阅读 · 0 评论 -
【面试题分析】第三篇 花旗银行|软件工程师|面经【2轮技术+1轮hr面】(21 届秋招)|2021|(3.25-3.29)
参考面经:花旗银行|软件工程师|面经【2轮技术+1轮hr面】(21 届秋招)|2021|原创 2021-03-29 14:54:34 · 1681 阅读 · 0 评论 -
【面试题分析】第二篇 [拼多多|客户端开发|秋招|面经【2轮技术+1轮HR面】|2021(3.18-3.25)
参考面经:拼多多|客户端开发|秋招|面经【2轮技术+1轮HR面】|2021————————————————————————————————————————————————————原创 2021-03-24 18:49:16 · 774 阅读 · 0 评论 -
【面试题分析】第一篇 美团金融安卓客户端面经【 3 轮技术面 + 1 轮 HR 面】(21 届秋招)(3.11-3.18)
面试准备:丰富简历。包括自我介绍、项目经验(复盘与创新)与基础知识;基础知识的学习。java后台相关(JVM、并发编程、java核心技术卷1)、Linux、算法与数据结构、计算机网络、操作系统、数据库;面试的常规问题以及对岗位的理解。(相关书籍、博客、github)————————————————————————————————————————————————————————第一题:String、StringBuffer 和 StringBuilder 的区别分析: 从可变性、安全性、用法入原创 2021-03-17 15:10:33 · 524 阅读 · 0 评论