面试

Redis缓存总结:淘汰机制、缓存雪崩、数据不一致....

我们两清 提交于 2021-01-29 10:35:19
越努力,越幸运, 本文已收藏在Gitee中 JavaCommunity , 里面有面试分享、源码分析系列文章,欢迎收藏,点赞 https://gitee.com/JavaCommunity/JavaCommunity 在实际的工作项目中, 缓存成为高并发、高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好, 缓存数据饱和,有良好的数据淘汰机制 由于Redis 天然就具有这两个特征,Redis基于内存操作的,且其具有完善的数据淘汰机制,十分适合作为缓存组件。 其中,基于内存操作,容量可以为32-96GB,且操作时间平均为100ns,操作效率高。而且数据淘汰机制众多,在Redis 4.0 后就有8种了促使Redis作为缓存可以适用很多场景。 那Redis缓存为什么需要数据淘汰机制呢?有哪8种数据淘汰机制呢? 数据淘汰机制 Redis缓存基于内存实现的,则其缓存其容量是有限的,当出现缓存被写满的情况,那么这时Redis该如何处理呢? Redis对于缓存被写满的情况,Redis就需要缓存数据淘汰机制,通过一定淘汰规则将一些数据刷选出来删除,让缓存服务可再使用。那么Redis使用哪些淘汰策略进行刷选删除数据? 在Redis 4.0 之后,Redis 缓存淘汰策略6+2种,包括分成三大类: 不淘汰数据

Vue3对于一个前端来讲意味着什么?

匆匆过客 提交于 2021-01-29 09:48:52
// 且读且珍惜 // 正文字数 1828 最近很多微信公众号和技术社区,讨论的最多的无非就是 Vue3 了,大多数都是Composition API和基于Proxy的它的原理分析。但是今天老袁想着跟大家聊聊,Vue3对于一个前端更深层次的意义到底意味着什么?我们从这个几个方面来聊聊吧。 悠悠十年,前端框架催人老 理性追框架 Vue的原理的原理了解一下 珍惜年轻的日子 未来可期 悠悠十年,前端框架催人老 相信很多老前端,可能跟我一样。以前天天要兼容IE6、7、8、9、10、11、12+还有一大堆什么你根本叫不上来名字的浏览器,那时候就盼着啥时候有一天能不再兼容这鬼玩意,嗯。到了今天,我们当初心心念念的时代来了,我们再也不用为了CSS而付出太多的努力。虽然依然存在一些不兼容,但是我们可以使用CSS的工作流可以使用PostCSS,甚至直接使用Houdini去介入到浏览器的重绘和重排。那时候我们使用jQuery对浏览器事件的大兼容,更不用搞什么啥babel-polyfill。有人可能会说jq那玩意多恶心啊,谁用啊。其实这东西看怎么写了,写好了其实没那么恶心。不过在今天,大家美滋滋的写着TS的时候,大部分同学其实也未曾关注过所谓编译之后的东西长什么样,其实也挺🤢 Knockout 的横空出世突然让我们觉得手里的jq代码不香了,大家第一次体会到了MVVM的快乐

vue3对于一个前端来说意味着什么

我怕爱的太早我们不能终老 提交于 2021-01-29 09:12:56
强力推荐前端面试刷题神器 精彩文章回顾,点击直达 点分享 点收藏 点点赞 点在看 本文分享自微信公众号 - 前端先锋(jingchengyideng)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4581713/blog/4910203

万字长文!剑指offer全题解思路汇总

我是研究僧i 提交于 2021-01-29 08:59:47
剑指Offer69题思路汇总 面试题1: 赋值运算符重载:该题主要考察 拷贝构造,构造析构,重载操作符。在面试者使用 c++ 等语言时进行考察。 面试题2 :实现Singleton模式:懒汉线程不安全,饿汉线程安全(但是不能延迟加载),双重检查锁定+volatile关键字 (可以实现线程安全,并且可以延迟加载) 面试题3 :二维数组中的查找:对于在一个每一行从左到右依次递增,每一列从上到下依次递增的二维数组查找一个元素,可以选择从数组左上角开始查找array[i][j],如果目标元素大于array[i][j],i+=1,如果元素小于array[i][j],j-=1,依次循环直至找到这个数。 面试题4: 替换空格:如果直接每次遇到空格添加'%20',那么空格后面的数字就需要频繁向后移动。遇到这种移动问题,我们可以尝试先给出最终需要的长度,然后从后向前扫描,同时给定两个指针来保证定位。 「逆向思维」 面试题5: 从头到尾打印链表:从头到尾遍历链表,并用一个栈存储每个结点的值,之后出栈输出值即可。 面试题6: 重建二叉树:利用二叉树前序遍历和中序遍历的特性。前序遍历的第一个值一定为根节点,对应于中序遍历中间的一个点。在中序遍历序列中,这个点左侧的均为根的左子树,这个点右侧的均为根的右子树。这时可以利用递归,分别取前序遍历[1:i+1]和中序遍历的[:i]对应与左子树继续上一个过程

小白真能看一篇文章就学会全排列算法吗?

半腔热情 提交于 2021-01-29 08:51:09
片 今天是小浩算法 “365刷题计划” 第97天 。为大家分享如何用算法来求全排列!话不多说,直接看题! 01 PART 全排列是啥 什么是全排列?从 n 个不同元素中任取 m(m≤n)个元素,按照一定的顺序排列起来,叫做从 n 个不同元素中取出 m 个元素的一个排列。当 m=n 时所有的排列情况叫全排列。 比如 [1,2,3] 全排列共有 6 种: 02 PART 全排列题目 然后把上面的全排列稍微改改,就变成了一道算法题。。。 全排列问题:给定一个 没有重复 数字的序列,返回其所有可能的全排列 。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 03 PART 题解分析 这种由基础数学知识改编而成的题目,在面试时还是很受欢迎的。因为作为面试官,可以用这种题目,来显示自己的博学。(谬论) 假如我们不是做算法题,而是做数学题。我们会一个位置一个位置的来考虑,先写出以1开头的排列,再写出以2开头的排列,最后写出以3开头的排列。 这种思路是不是很像深度优先(DFS)的求解过程呢? 1、我们先选择 1,然后为 1 的第二位选择 2,此时 1 的 第三位只能选择 3。 2、然后完成了上面的步骤,我们需要回退到 1,因为只有 1 这里还存在别的选择 1-3,然后填写 1-3 后,只有 1

据说只有程序员才看得懂的段子

偶尔善良 提交于 2021-01-29 08:15:47
(点击上方公众号,可快速关注) 都周末了, 大家好好放松一下,工作肯定是要努力好好干的,身体也很重要, 气温逐渐下降,大家记得多穿点的,爱你们哟! 1. 一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班。” 2. 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world。 3. 问:程序员最讨厌康熙的哪个儿子。答:胤禩。因为他是八阿哥(bug) 4. 程序猿要了3个孩子,分别取名叫Ctrl、Alt 和Delete,如果他们不听话,程序猿就只要同时敲他们一下就会好的。 5. 今天在公司听到一句惨绝人寰骂人的话:“你TM就是一个没有对象的野指针!” 6. 程xx遭遇车祸成植物人,医生说她活下来的希望只有万分之一,唤醒更为渺茫。她的同事和亲人没放弃,并根据程xx对testing痴迷的作风,每天都在她身边念:“你测的模块上线后回滚了。”奇迹发生了,程xx醒来第一句话:确认那模块是我测的? 7. 一个程序员在海滨游泳时溺水身亡。他死前拼命的呼救,当时海滩上有许多救生员,但是没有人救他。因为他一直大喊“F1!”“F1!”,谁都不知道“F1”究竟是什么意思。 8. 世界上最远的距离

从一道面试题谈谈一线大厂码农应该具备的基本能力

偶尔善良 提交于 2021-01-29 04:35:18
从一道面试题谈谈一线大厂码农应该具备的基本能力 码农唐磊 程序猿石头 作者:Yura Shevchenko 来源:skypixel.com 关于一线码农的面试,我想说 求职面试在绝大部分人来说都是必不可少的,自己作为求职者也参与了不少面试(无论成功或者失败),作为技术面试官参与面试也有四五年的经验,在面试过程中也见识到了各种各样的人(有厉害的,也有奇葩的)。在这里也只想谈谈自己的一些看法,我说的不一定对,有不同的意见可以留言参与讨论。 面试本来就是一个双向选择的过程,面试官和候选人的地位本应该是一个平等的位置,面试官希望通过简单的交流沟通可以对候选人的技术,沟通等有一定了解进而确定候选人是否匹配相应的职位。个人认为一场成功的面试最好是能够让求职者和面试官都有一定的收获(曾经也遇到过在某次面试后,HR 告诉我有候选人特意跟她反馈要表达对面试官的感谢,因为让他很有收获,这当然还是让我感到非常高兴的),每次参与面试,也希望自己能达到这个目标。对于候选人来说能从面试过程了解自己的不足或者交流探讨面试问题;对于面试官来说能了解候选人的技术和项目,在交流探讨中也是一次学习和巩固。 另外面试能否通过最终强调的是职位匹配,一个萝卜一个坑,萝卜太大或太小都不一定合适。所以有时候面试没通过并不是候选人不够优秀,也有可能是候选人过于优秀(例如本来只想招聘 P6,结果来了一个 P8的候选人肯定不合适)。

Android事件分发机制五:面试官你坐啊

大兔子大兔子 提交于 2021-01-29 04:32:47
前言 很高兴遇见你~ 事件分发系列文章已经到最后一篇了,先来回顾一下前面四篇,也当个目录: Android事件分发机制一:事件是如何到达activity的? : 从window机制出发分析了事件分发的整体流程,以及事件分发的真正起点 Android事件分发机制二:viewGroup与view对事件的处理 : 源码分析了viewGroup和view是如何分发事件的 Android事件分发机制三:事件分发工作流程 : 分析了触摸事件在控件树中的分发流程模型 Android事件分发机制四:学了事件分发有什么用? : 从实战的角度剖析事件分发的运用 本文是最后一篇,主要是模拟面试情况提出一些问题以及解答,也当是整个事件分发知识的回顾。读者也可以尝试一下看看这些问题是否都能解答出来。 面试开始 学过事件分发吗,聊聊什么是事件分发 事件分发是将屏幕触控信息分发给控件树的一个套机制。 当我们触摸屏幕时,会产生一些列的MotionEvent事件对象,经过控件树的管理者ViewRootImpl,调用view的dispatchPointerEvnet方法进行分发。 那主要的分发流程是什么: 在程序的主界面情况下,布局的顶层view是DecorView,他会先把事件交给Activity,Activity调用PhoneWindow的方法进行分发

一文告诉你黑盒测试、白盒测试、集成测试和系统测试的区别与联系

让人想犯罪 __ 提交于 2021-01-28 08:24:07
于开发人员来说,往往对各种测试方法感到疑惑。特别是在整合代码的时候,我们就能深刻感觉受到测试的重要性。很多开发人员只注重写代码,轻视测试的重要性。总是代码一写完提交然后就交给测试组测试了,没多久测试组发回测试报告。然后又苦恼的修改自己代码的bug,慢慢地就开始讨厌测试组人员。没有经过自己细心测试的代码,不仅浪费了别人时间更影响到了自己的心情。 接下来为大家细心讲述一下各种测试应用的环境及作用 一、测试环境和角色 黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试 : 这些测试的范围正好是逐步递增的关系,但是测试的人员角色是不同。 黑盒测试、白盒测试、单元测试:开发人员分在不同的开发阶段要做的事情 黑盒测试、集成测试、系统测试:测试人员在测试周期内级层做的工作 验收测试:一般是在用户方做的工作 二、根据不同的范围 测试可以分为单元测试、集成测试、系统测试和验收测试。 体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 三、测试的功能 1.单元测试 粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等

程序员入职新公司,只需8步,直接凸显出个人价值

∥☆過路亽.° 提交于 2021-01-28 05:30:47
如果你初入职场,你是否对职场充满好奇与期待;如果你刚刚跳槽,你是否迫切地希望展示自己的才华!当你进入新公司之后,如何能够快速上手工作、融入团队,展现能力,凸显价值? 如果你对新职场存有困惑,以下八个方面一定会让你有所收获,使你的职业规划更加清晰,提高竞争力,更重要的是掌握职业发展的方法论。 1、如何调整心态以适应新环境; 2、初入公司如何给自己设定目标; 3、作为程序员,如何快速上手项目; 4、作为新人,如何快速了解公司的业务; 5、如何尽快了解企业文化并融入团队; 6、如何在试用期内,快速证明自己的能力; 7、如何快速体现自己的价值; 8、如何在新公司做好自己的职业规划; 一、如何调整心态以适应新环境 人们常说,心态决定一切,无论做什么事情,心态都是很重要的一个因素。虽然我们不能改变周围的环境、不能改变别人,但是我们可以调整自己的心态,改变自己。有个好的心态,遇到事情就会从容不迫,心态好,一切都会好。 我将分别从职场新人和跳槽人士两个部分来谈一谈如何调整心态以适应新的工作环境。 1、初入职场六个注意 作为一个职场新人,最重要的变化是从学校的学习生活转变进入职场的工作生活,一切都是新鲜的,步入职场就是进入了社会。其实学校也是一个社会,只不过学校里面没有那么多事情,周围的同学也比较单纯,没有那么复杂。进入职场,其实是进入社会的开始,职场里的人是竞争的关系,能者上,面对各种利益关系