面试

新年Aliyun面经分享:基础+项目+源码+高阶

≡放荡痞女 提交于 2021-02-18 01:12:36
眼看着春招就来了!所以就让我想起去年秋招之路,现在跟大家分享一下我的面试路程,希望也能帮助大大家!原本秋招差不多顺利结束了,几乎阿里、百度、美团、字节、滴滴等等的大厂我都有疯狂投岗面试。虽然结果是比较圆满的,不过Aliyun倒是给我留下了深刻的印象。原因?请往下看... Aliyun一面:MySQL+Redis+JUC+Kafka+项目 Aliyun二面:项目+Java+数据库+网络+高并发+基础 Aliyun三面:项目+源码 Aliyun四面:基础+项目+缓存+锁 问的是还挺多的,个人觉得也挺广泛的(毕竟面试造火箭,工作拧螺丝),还有一些没记住(脑容量有限~哈哈哈~)。以上只是大块方向,我们一起来看看具体的问题如何吧... 【文末有相关问题的解析】 Aliyun一面:MySQL+Redis+JUC+Kafka+项目 1. MySQL (1)MySQL数据量太大怎么办,如何分库分表 (2)binlog,读写分离,主从复制 (3)MySQL里的锁了解吗 2. Redis (1)主从复制 (2)分布式锁 (3)哈希槽,一致性哈希 3. JUC (1)锁 4. Kafka (1)高性能的原因 Aliyun二面:项目+Java+数据库+网络+高并发 1. 项目 (1)为什么选Flume (2)为什么选Kafka (3)数据哪来的 (4)如何给出推荐算法 2. JAVA (1

常问的22道Java面试题,值得收藏【文末送书】

微笑、不失礼 提交于 2021-02-17 20:41:58
作者:爱茹一婉年 原文: https : //blog.csdn.net/qq_21924011/article/details/80399836 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet) List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引) |-- ArrayList:底层是数组结构,特点是:查询很快,增删稍微慢点,线程不同步:A线程将元素放在索引0位置,CPU调度线程A停止,B运行,也将元素放在索引0位置,当A和B同时运行的时候Size就编程了2. |-- LinkedList:底层使用的是链表数据结构,特点是:增删很快,查询慢。线程不安全,线程安全问题是由多个线程同时写或同时读写同一个资源造成的。 |--Vector:底层是数组数据结构,线程同步,Vector的方法前面加了synchronized关键字,被ArrayList代替了,现在用的只有他的枚举。 Set:元素是无序的,且不可以重复(存入和取出的顺序不一定一致),线程不同步。set底层是使用Map实现的,故可以通过ConcurrentHashMap的方式变通实现线程安全的Set。 |--HashSet:底层是哈希表数据结构。根据hashCode和equals方法来确定元素的唯一性。

Redis系列三

穿精又带淫゛_ 提交于 2021-02-17 18:58:39
前言   从学校出来,做开发工作也有一定时间了,最近有想系统地进一步深入学习,但发现基础知识不够扎实,故此来回顾基础知识,进一步巩固、加深印象。   最初开始接触编程时,总是自己跌跌撞撞、不断摸索地去学习,再一点点应用到实际项目中,知识点才更加清晰。后来,尝试写博客,把学到的知识试着分享出来,也是一次巩固的过程。 1、问:Redis雪崩了解吗?   答:我了解的。目前电商首页以及热点数据都会去做缓存,一般缓存都是定时任务去刷新,或者是查不到之后去更新,定时任务刷新就有一个问题。   举个简单例子:如果所有首页的key失效时间都是12小时,中午12点刷新,我0点开始抢单活动,大量用户涌入,假设当时每秒6000个请求,本来缓存可以扛住每秒5000个请求,但是缓存当时所有的 Key 都失效了。此时,1秒 6000个请求全部打到数据库,数据库必然扛不住,它会报一下警,但实际情况可能是DBA都没反应过来数据库就直接挂了。此时,如果没有什么特别的方案来处理这个故障,DBA很着急,重启数据库,但是数据库马上又被新的流量打死了。这就是我理解的缓存雪崩。    同一时间缓存大面积失效,那一瞬间Redis跟没有一样,这个数量界别的请求直接打到数据库几乎是灾难性的。试想一下,如果打挂的是一个用户服务的库,那其他依赖它的库所有的接口几乎都会报错,如果没有做熔断等策略,基本上就是一瞬间挂一片的节奏

面试官:数据库自增ID用完了会怎么样?

大憨熊 提交于 2021-02-17 17:03:28
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段、回血的模式,因为魔兽的血量是int型,不能超过2^32大小。 估计暴雪的设计师都没想到几个资料片下来血量都超过int上限了,以至于大家猜想才会有后来的属性压缩。 这些都是题外话,只是告诉你数据量大了是有可能达到上限的而已,回到Mysql自增ID上限的问题,可以分为两个方面来说。 1.有主键 如果设置了主键,并且一般会把主键设置成自增。 我们知道,Mysql里int类型是4个字节,如果有符号位的话就是[-2^31,2^31-1],无符号位的话最大值就是2^32-1,也就是4294967295。 创建一张表试试: CREATE TABLE `test1` ( `id` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` varchar ( 32 ) NOT NULL DEFAULT '' , PRIMARY KEY ( `id` ) ) ENGINE = InnoDB AUTO_INCREMENT= 2147483647 DEFAULT CHARSET =utf8mb4; 然后执行插入 insert into test1( name ) values ( 'qq' ); 这样表里就有一条达到有符号位的最大值上限的数据。

【Java】基础34:线程之间的合作?

戏子无情 提交于 2021-02-17 13:55:19
今天是我自学Java的第34天。 感谢你的观看,谢谢你。 话不多说,开始今天的学习:。 首先回顾下线程同步: 线程同步其实讲的就是线程之间的竞争 。 通俗一点说就是: 对于同一个任务,因为Java虚拟机的抢占式调度,线程一、线程二都抢着做,线程一还没做完,线程二就跑进来横插一脚,说白了不就好比两个人在互相竞争么? 对于这种情况,我们采用了同步机制来解决,让它们一次只能执行一个线程:线程一执行完,线程二才能进去。 那么现在问题来了: 线程之间既然有竞争,那有没有合作呢? 答案是有的,有竞争自然也会有合作。 用一个案例来说明: 刘小爱是个吃货,要去包子铺吃包子。 现有一个设定:刘小爱1次只能吃1个包子,包子铺1次只能生产1个包子,一有包子刘小爱就吃,吃完后,包子铺就开始生产,包子一生产出来,刘小爱就继续吃…… 先不管符不符合现实逻辑哈,反正设定是这样的。 面对这个问题,该怎么办? 刘小爱是一个线程,包子铺也是一个线程,它们会操作同一个对象,也就是包子。 一、包子类 创建一个包子类,代码如下: ①包子类里面有一个属性叫isHave。 isHave用于判断是否有包子:如果为true,表示有包子;如果为false,表示没有包子。 ②get/set方法用于获取和修改isHave属性。 其中默认有一个无参构造方法,可以省略不写。 二、刘小爱 创建一个刘小爱类

测试开发这一年

心不动则不痛 提交于 2021-02-17 09:42:40
上一期我聊到2018年是我做测试开发的一年,然后,有不少测试同学问测试开发做具体在做什么?根据近一年的工作,再次聊聊这个岗位。 我以前的文章曾经对测试开发做过简单的一个划分: 测试工具、测试平台开发:这类开发工作主要服务于“测试”相关业务,本质与开发公司其它产品业务并没有什么不同。 自动化测试开发:这类工作主要围绕公司的产品开发自动化测试脚本,主要包括 UI自动化测试、接口自动化测试和单元测试等。 测试脚本的开发:这类工作主要是服务于一般测试工作,提高测试效率,例如通过测试脚本生成测试数据、抓取页面数据进行对比等。 通过这一年团队的发展和自我定位,我对测试开发有了不同的看法。 大多数测试人员的发展轨迹是这样(包含1、2、3): 1、软件测试工程师: 主要以功能测试为主。 2、自动化测试工程师/性能测试工程师/高级测试工程师: 我认为作为一个比较有经验的测试,掌握一定的编程技术、自动化测试技术、性能测试工具几乎是必备的。所以,其实,拥有公司title为“自动化测试工程师”和“性能测试工程师”的测试人员并不多。 自动化和性能测试是多年来一直学习的技术,但少有测试能够“精通”,其实,我觉得本质上原因还是大家编程能力太弱(我没说测试人员普遍编程能力弱就一定比开发low),又妄想通过学习一两个“先进”的测试工具来弥补这两块不足,但编程能力弱真的影响你对自动化和性能的理解深度。 例如

bat脚本常用命令

Deadly 提交于 2021-02-17 04:11:20
意气风发啊 骑上我快乐的小摩托 良心公众号啊! 我上墙了 你开始了 嚯嚯嚯嚯嚯 哈哈哈哈哈 皮皮虾我们走 可乐在厨房 红牛在冰箱 6666666 看弹幕,点 关注 " 我相信这不是我一个人的经历:傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。 ——《沉默的大多数》 " title: bat脚本常用命令 date: 2019-11-14 20:23:36 tags: windows script categories: windows script Author:闫玉良 bat 脚本?如果不是从事微软开发相关工作的人员,是不是感觉很耳熟但是又好像不熟悉?还等什么,一睹为快 bat 脚本是 windows 上所用的脚本,我们经常使用的 cmd 一些命令就可以使用。也许你会说为什么不使用 powershell 脚本?因为古老的一些服务器上面没有安装 powershell 你信不信?比如 windows server 2003。 很荣幸,我遇到了,没有什么办法,只能查阅相关资料迎难而上了!脚本其实很简单,下面做一个记录,供大家有需要时获取: 1.设置变量 设置变量使用 SET 关键字,语法如下: SET 变量名=变量值 1. 变量名与变量值一定要紧挨等于号!!!

程序员面试被要求手写代码,你与顶级程序员的差别在哪?

半城伤御伤魂 提交于 2021-02-17 04:09:47
面试时,被要求手写代码,自信心爆棚的你,忽然有了提笔忘记的感觉,在一张纸上反复涂涂画画,勉强写出了一个功能,结果漏洞百出,面试过程相当不顺利,丢下笔,对接下来的面试敷衍了事,结束后,继而向周边的朋友大吐苦水:都什么年代了,还要求手写代码?这公司真落后。 然而,这就是你与大神级别程序员,最根本的差距。难道顶级程序员们,手写代码都特别厉害?随便一动笔就是行云流水,一泻千里?当然不!也许,他们根本没手写过代码。 当你在倾听远古时代(七八十年代)程序员们的故事时,一定会有这么一则趣事:当年电脑还没有普及,如果想编程,行得通的就是跑网吧去,可上网费贵啊,只能买个笔记本,提起水笔,把代码写好,然后在到网吧里去输、去调试、运行,这样可以节省很多上机的费用。 一位大一学生坚信,手写代码可以帮助自己,更好的学习编程,于是踏上了这条不归路。起初,手写代码确实帮打下了坚实的基础,然而很快,他就被一个程序,十几页的代码调试给搞疯了,并开始四处求助,最终这名学生,放弃了手写代码的学习方式。 在物资匮乏的年代,手写代码几乎成了程序员们的必备技能,可那时,更多的是迫于无奈。手写代码,不失为初学者的一个好方法,可当你深入学习时,再想手写,一定会造成很大的麻烦。 纵观如今的互联网巨头们,似乎面试涉及手写代码的也是寥寥无几,google、BAT都是如此。当然,有时候还是逃脱不了手写代码的命运。

顶级程序员和普通程序员在思维模式上的5个区别!

浪尽此生 提交于 2021-02-17 04:09:30
《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式: 1. 勇于去研究你不懂的代码 一般人都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在人们很容易就接触到优秀的开源代码资源,你可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。 除了代码之外,很多人对于陌生的工作内容也会感到恐惧。每次换工作的时候,你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候工作效率没有以前那么高。很多人甚至觉得,他们是不是骗了面试官。 其实,大家都是在学习的过程中。在一个陌生的领域,没有人从一开始就是大神。如果你想变得越来越好,无论是写代码,与人沟通或者其它的技能,都是需要投入时间去学习的。 2. 精通代码调试(debug) 很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的? 几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。这是一个很重要的能力,但是偏偏学校里不教

因未发项目奖金,一名程序员决定删代码泄愤

不问归期 提交于 2021-02-17 04:05:46
长按识别上方二维码,关注公众号: 后端面试那些事 回复“ 报告 ”,获取你的GitHub年度报告! 作者 | 刘琳 来源 | 刘琳 你永远都想不到程序员会因为什么删掉代码。 你可能还记得年初微盟员工凭一己之力,删除自家公司数据库,累计市值蒸发超 30 亿港元的事情。 不仅如此,微盟服务器故障时间长达 8 天之久,最终赔付了商家 1.5 个亿,事后当事人自供是因酒后因生活不如意、无力偿还网贷等个人原因删库。 原本以为这理由已经够奇葩了。 近日,雷锋网编辑发现了一个更奇葩的删库理由:因公司未发奖金,一名程序员怒而修改华为云 obs 对象存储服务代码,导致平台大范围崩溃。 而这位“一时冲动”的程序员也收获了 5 个月的刑期。 看到这里,网友也忍不住吐槽道: 兄弟,不讲武德,付出代价了吧~ 1、 得不到奖励,不如就亲手毁灭 事情还要从今年 4 月份说起。 被告人王某(以下简称:王某)所在的公司项目是一个同城生活服务平台,主要是满足晋城消费者线上、线下的吃、喝、玩、乐、购服务。 2020 年 3 月 22 日,该公司某平台被晋城市商务局选为晋城市同城生活服务平台,受晋城市商务局委托向消费者发放电子消费劵。 2019 年 12 月,时任公司技术部的刘经理交给王某一个任务:开发 obs 代码,如果开发成功公司会有奖励。 在开发过程中王某负责写代码,另一位同事则负责做前段代码工作