面试
文章平均质量分 88
艾小仙
关注互联网技术发展
展开
-
并发编程从入门到放弃系列开始和结束
对于 Java 部分的面试来说,突然想到并发这一块的内容是不太完整的,这篇文章会通篇把多线程和并发都大致阐述一遍,至少能够达到了解原理和使用的目的,内容会比较多,从最基本的线程到我们常用的类会统一说一遍,慢慢看。对于基本的概念,大家应该都很熟悉了,进程是资源分配的单位,线程是CPU调度的单位,线程是进程中的一个实体。对于我们的Java程序来说,天生就是多线程的,我们通过main方法启动,就是启动了一个JVM的进程,同时创建一个名为的线程,main就是JVM进程中的一个实体线程。线程几种基本状态:几个状态之间原创 2022-06-01 10:37:35 · 363 阅读 · 0 评论 -
真实字节二面:什么是伪共享?
这个问题来自最近一个朋友字节面试碰到的,最后他也成功拿到了字节offer,这个问题我想可能挺多人不太清楚,所以想拿出来单独说一说。好了,让我们进入正题。什么是伪共享首先大家都知道,随着CPU和内存的发展速度差异的问题,导致CPU的速度远远快于内存,所以一般现在的CPU都加入了高速缓存,就是常说的解决不同硬件之间的性能差异问题。这样的话,很简单的道理,加入了缓存,就必然会导致缓存一致性的问题,由此,又引入了缓存一致性协议。(如果你不知道,建议去百度一下,这里不做展开)CPU缓存,顾名思义,越贴近CP原创 2021-03-01 11:52:47 · 384 阅读 · 0 评论 -
《我想进大厂》之Zookeeper夺命连环9问
谈谈你对Zookeeper的理解?Zookeeper是一个开源的分布式协调服务,由雅虎公司创建,由于最初雅虎公司的内部研究小组的项目大多以动物的名字命名,所以后来就以Zookeeper(动物管理员)来命名了,而就是由Zookeeper来负责这些分布式组件环境的协调工作。他的目标是可以提供高性能、高可用和顺序访问控制的能力,同时也是为了解决分布式环境下数据一致性的问题。集群首先,Zookeeper集群中有几个关键的概念,Leader、Follower和Observer,Zookeeper中通常原创 2021-02-02 13:01:26 · 657 阅读 · 0 评论 -
《我想进大厂》之分布式事务篇
对于分布式事务,相信所有人都应该很了解,为什么会有分布式事务?无论是数据量导致的分库,还是现在微服务盛行的场景都是他出现的原因。这一篇内容还是避免不了俗套,主要的范围无非是XA、2PC、3PC、TCC,再最后到Seata。但是,我认为这东西,只是适用于面试和理论的了解,你真要说这些方案实际生产中有人用吗?有,但是会实现的更简单,不会套用理论来实现,大厂有大厂的解决方案,中小公司用框架或者压根就不存在分布式事务的问题。那,为什么还要写这个?为了你面试八股文啊,小可爱。事务要说.原创 2021-01-18 14:00:47 · 800 阅读 · 0 评论 -
面试官:数据库自增ID用完了会怎么样?
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段、回血的模式,因为魔兽的血量是int型,不能超过2^32大小。估计暴雪的设计师都没想到几个资料片下来血量都超过int上限了,以至于大家猜想才会有后来的属性压缩。这些都是题外话,只是告诉你数据量大了是有可能达到上限的而已,回到Mysql自增ID上限的问题,可以分为两个方面来说。1.有主键如果设置了主键,并且一般会把主键设置成自增。我们知道,Mysql里int类型是4个原创 2021-01-04 12:56:37 · 632 阅读 · 0 评论 -
5万字 | 2020大厂面试总结,PDF供下载
前言为什么写这些内容,因为2020年3月份疫情的原因裁员,而我自己本身从2015年开始就基本没有出去面试过了。所以,在年初的时候就开始网上找问题、刷面试题,然后疯狂的面试。中间形成了一个文档,不过内容都是网上整理来的,然后从2020年7月底的时候,开始想自己写个公众号,同时把这些东西分享出来,因为觉得虽然是从网上看来的部分面试题,但是同时也加上了自己和朋友真实的面试真题,对其他人应该也是挺有帮助的。然后陆续发了一个月,慢慢的把这些笔记都发到公众号上了,只不过后面发现其实这不是原创啊,没办法,于是乎,原创 2020-12-31 17:46:08 · 4281 阅读 · 1 评论 -
《我想进大厂》之网络篇夺命连环12问
谈一谈你对TCP/IP四层模型,OSI七层模型的理解?为了增强通用性和兼容性,计算机网络都被设计成层次机构,每一层都遵守一定的规则。因此有了OSI这样一个抽象的网络通信参考模型,按照这个标准使计算机网络系统可以互相连接。物理层:通过网线、光缆等这种物理方式将电脑连接起来。传递的数据是比特流,0101010100。数据链路层: 首先,把比特流封装成数据帧的格式,对0、1进行分组。电脑连接起来之后,数据都经过网卡来传输,而网卡上定义了全世界唯一的MAC地址。然后再通过广播的形式向局域网内所有电脑发送数据原创 2020-12-28 09:59:10 · 832 阅读 · 0 评论 -
面试官:缓存一致性问题怎么解决?
关于Redis的其他的一些面试问题已经写过了,比如常见的缓存穿透、雪崩、击穿、热点的问题,但是还有一个比较麻烦的问题就是如何保证缓存一致性。对于缓存和数据库的操作,主要有以下两种方式。先删缓存,再更新数据库先删除缓存,数据库还没有更新成功,此时如果读取缓存,缓存不存在,去数据库中读取到的是旧值,缓存不一致发生。解决方案延时双删延时双删的方案的思路是,为了避免更新数据库的时候,其他线程从缓存中读取不到数据,就在更新完数据库之后,再sleep一段时间,然后再次删除缓存。sleep的时间要对业务读原创 2020-12-21 22:13:13 · 1013 阅读 · 0 评论 -
淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
上一篇的同学拿到了bigo和腾讯的offer,这一次的分享来自两位同学的面试综合,他们分别拿到了菜鸟、嘀嘀、盒马的多个offer,由于面试的时间跨度时间太长,且面试的部门太多,只能回忆到具体的面试题,无法再具体区分出几面了,但是面试真题还是可以拿出来分享一下,且看正文。菜鸟&嘀嘀这些来自第一位同学分享的面试题,由于过于优秀,同时面试几个大厂都已拿到offer,他只能回忆到一些重点的问题。JVM内存溢出排查?根据他的描述,JVM内存溢出的排查是个必问点,基本上每个公司都被问到,要知道怎么利原创 2020-12-15 17:50:12 · 651 阅读 · 1 评论 -
我摊牌了,大厂面试Linux就这5个问题
说真的,这就是《我想进大厂》系列第八篇,但是Linux的问题确实很少,就这样,强行编几个没有营养的问题也没啥意义。1.CPU负载和CPU利用率的区别是什么?首先,我们可以通过uptime,w或者top命令看到CPU的平均负载。Load Average :负载的3个数字,比如上图的4.86,5.28,5.00,分别代表系统在过去的1分钟,5分钟,15分钟内的系统平均负载。他代表的是当前系统正在运行的和处于等待运行的进程数之和。也指的是处于可运行状态和不可中断状态的平均进程数。如果单核CPU的话,负原创 2020-12-08 10:37:28 · 722 阅读 · 0 评论 -
苦修月余,斩获bigo、腾讯offer,面经奉上!
2020年已经接近尾声了,跳槽的季节又来了,刚好,最近有好几个读者拿到了腾讯、阿里大厂的offer,在我厚颜无耻的追问之下,他们终于给我透露出了面试题的细节,这份热乎乎、滚滚烫的面经分享给大家,希望对大家有所帮助。bigo面试第一位读者经过1个多月的刷题、看书,成功拿下bigo和腾讯的offer,这位读者之前也是985高材生,但是一直在小公司,之前和我聊了聊,透露出想去大厂的想法,这不,还是挺简单的嘛,一把就过了,成功斩获bigo、腾讯offer。bigo一面第一面的话,我觉得比较基础,都是针对Ja原创 2020-12-08 10:28:51 · 505 阅读 · 0 评论 -
《我想进大厂》之Spring夺命连环10问
1.说说Spring 里用到了哪些设计模式?单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使用 JDK 动态代理和 CGLIB 代理。模板方法模式:主要是一些对数据库操作的类用到,比如 JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关闭连接几原创 2020-11-30 13:48:55 · 842 阅读 · 1 评论 -
《我想进大厂》之Java基础夺命连环16问
说好了面试系列已经完结了,结果发现还是真香,嗯,以为我发现我的Java基础都没写,所以这个就算作续集了,续集第一篇请各位收好。说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,使得操作系统具有更好的并发性。线程原创 2020-11-12 18:18:17 · 511 阅读 · 4 评论 -
高频面试题:秒杀场景设计
秒杀这个话题到现在来说已经是一个老生常谈的话题了,不过因为又临近一年一度的双11,而且发现前段时间无论是阿里还是腾讯一些大厂其实还是在频繁的问到这个场景题,所以还是准备拿出来说说。秒杀从规模上来说可以分为大秒和小秒。大秒指的是比如双11这种特定的节日,商品规模超大、价格超低、流量超大的这种类型活动,小秒一般指的是商家自己配置的一些时段类型的活动,由商家自己指定时间上架。从形式来说还可以分为单时段秒杀和多时段秒杀。但是在这个场景里,我们一般就是指的单时段大型秒杀。秒杀设计要面对的压力和难度有几点:原创 2020-11-04 11:32:06 · 1048 阅读 · 1 评论 -
面试官:面对千万级、亿级流量怎么处理?
这个《我想进大厂》系列的最后一篇,终结篇。可能有点标题党了,但是我想要表达的意思和目的是一致的。这是一道很常见的面试题,但是大多数人并不知道怎么回答,这种问题其实可以有很多形式的提问方式,你一定见过而且感觉无从下手:面对业务急剧增长你怎么处理?业务量增长10倍、100倍怎么处理?你们系统怎么支撑高并发的?怎么设计一个高并发系统?高并发系统都有什么特点?… …诸如此类,问法很多,但是面试这种类型的问题,看着很难无处下手,但是我们可以有一个常规的思路去回答,就是围绕支撑高并发的业务场景怎么设计系原创 2020-10-28 22:30:22 · 855 阅读 · 2 评论 -
来自朋友最近阿里、腾讯、美团等P7岗位面试题
来自年初和最近朋友的大厂面试题。阿里巴巴对象如何进行深拷贝,除了clonehappen-before原则jvm调优的实践单例对象会被jvm的gc时回收吗redis如果list较大,怎么优化tcp的沾包与半包socket编程相关的一些api和用法建立和处理连接的是同一个socket吗,socket中两个队列分别是啥项目中有使用过netty吗TSL1.3新特性AES算法原理redis集群的使用mysql与mogo对比场景题:设计一个im系统包括群聊单聊场景题:设计数据库连接池原创 2020-10-27 00:05:38 · 1075 阅读 · 0 评论 -
《我想进大厂》之JVM夺命连环10问
这是面试专题系列第五篇JVM篇。说说JVM的内存布局?Java虚拟机主要包含几个区域:堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地原创 2020-10-24 09:49:26 · 623 阅读 · 0 评论 -
面试官:说说CountDownLatch,CyclicBarrier,Semaphore的原理?
CountDownLatchCountDownLatch适用于在多线程的场景需要等待所有子线程全部执行完毕之后再做操作的场景。举个例子,早上部门开会,有人在上厕所,这时候需要等待所有人从厕所回来之后才能开始会议。public class CountDownLatchTest { private static int num = 3; private static CountDownLatch countDownLatch = new CountDownLatch(num); p原创 2020-10-21 22:56:14 · 452 阅读 · 1 评论 -
《我想进大厂》之Dubbo普普通通9问
这是面试专题系列第四篇,Dubbo系列。Dubbo本身并不复杂,而且官方文档写的非常清楚详细,面试中dubbo的问题一般不会很多,从分层到工作原理、负载均衡策略、容错机制、SPI机制基本就差不多了,最大的一道大题一般就是怎么设计一个RPC框架了,但是如果你工作原理分层都搞明白了这个问题其实也就相当于回答了不是吗。说说Dubbo的分层?从大的范围来说,dubbo分为三层,business业务逻辑层由我们自己来提供接口和实现还有一些配置信息,RPC层就是真正的RPC调用的核心层,封装整个RPC的调用过程、负原创 2020-10-18 19:27:37 · 3890 阅读 · 2 评论 -
《我想进大厂》之Redis夺命连环11问
这是面试题系列第三篇–redis专题。说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅、慢查询、监视器功能都是使用到了链表来实现,每个链表的节点由一个lis原创 2020-10-08 20:02:31 · 4773 阅读 · 11 评论 -
《我想进大厂》之MQ夺命连环11问
继之前的mysql夺命连环之后,我发现我这个标题被好多套用的,什么夺命zookeeper,夺命多线程一大堆,这一次,开始面试题系列MQ专题,消息队列作为日常常见的使用中间件,面试也是必问的点之一,一起来看看MQ的面试题。你们为什么使用mq?具体的使用场景是什么?mq的作用很简单,削峰填谷。以电商交易下单的场景来说,正向交易的过程可能涉及到创建订单、扣减库存、扣减活动预算、扣减积分等等。每个接口的耗时如果是100ms,那么理论上整个下单的链路就需要耗费400ms,这个时间显然是太长了。如果这些操作全部原创 2020-09-29 11:14:11 · 2244 阅读 · 4 评论 -
面试官:哪些场景会产生OOM?怎么解决?
这个面试题是一个朋友在面试的时候碰到的,什么时候会抛出OutOfMemery异常呢?初看好像挺简单的,其实深究起来考察的是对整个JVM的了解,而且这个问题从网上可以翻到一些乱七八糟的答案,其实在总结下来基本上4个场景可以概括下来。堆内存溢出堆内存溢出太常见,大部分人都应该能想得到这一点,堆内存用来存储对象实例,我们只要不停的创建对象,并且保证GC Roots和对象之间有可达路径避免垃圾回收,那么在对象数量超过最大堆的大小限制后很快就能出现这个异常。写一段代码测试一下,设置堆内存大小2M。publi原创 2020-09-17 12:42:46 · 2097 阅读 · 0 评论 -
《我要进大厂》之mysql夺命连环13问
想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里?1. 能说下myisam 和 innodb的区别吗?myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。2. 说下mysql的索引有哪些吧,聚簇和非聚簇原创 2020-09-04 13:59:31 · 4366 阅读 · 7 评论