面试

分布式事务:两阶段提交与三阶段提交

有些话、适合烂在心里 提交于 2021-01-22 13:18:53
在分布式系统中著有 CAP 理论,该理论由加州大学伯克利分校的 Eric Brewer 教授提出,阐述了在一个分布式系统中不可能同时满足 一致性(Consistency) 、 可用性(Availability) ,以及 分区容错性(Partition tolerance) 。 C:一致性 在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。 A:可用性 可用性描述了系统对用户的服务能力,所谓可用是指在用户容忍的时间范围内返回用户期望的结果。 P:分区容错性 分布式系统通常由多个节点构成,由于网络是不可靠的,所以存在分布式集群中的节点因为网络通信故障导致被孤立成一个个小集群的可能性,即网络分区,分区容错性要求在出现网络分区时系统仍然能够对外提供一致性的可用服务。 对于一个分布式系统而言,我们要始终假设网络是不可靠的,因此分区容错性是对一个分布式系统最基本的要求,我们的切入点更多的是尝试在可用性和一致性之间寻找一个平衡点,但这也并非要求我们在系统设计时一直建立在网络出现分区的场景之上,然后对一致性和可用性在选择时非此即彼。实际上 Eric Brewer 在 2012 年就曾指出 CAP 理论证明不能同时满足一致性、可用性,以及分区容错性的观点在实际系统设计指导上存在一定的误导性 。传统对于 CAP 理论的理解认为在设计分布式系统时必须满足 P,然后在

动画:一道 K Sum 面试题引发的血案

狂风中的少年 提交于 2021-01-22 13:01:45
每当我遇到一个难道,脑子里下意识出现的第一个想法就是干掉它。将复杂问题简单化,简单到不能再简单的地步,也是我文章一直追求的一点。 K Sum 求和问题这种题型套娃题,备受面试官喜爱,通过层层拷问,来考察你对事物的观察能力和解决能力,这似乎成为了每个面试官的习惯和套路。打败对手,首先要了解你的对手。 看似复杂的东西,背后其实就是简单的原理和机制,宇宙万物存在的事物亦是如此。深入复杂问题内部,去看它简单的运行逻辑。将繁杂嵌套事物转化为可用简单动画表现的事物。这是一个由繁变简的过程,简单,简而不单,又单而不简。 诱饵:2Sum 两数之和 捕鱼,先要学会布网,看似一个简单题目,其实作为诱饵,引申出背后的终极 Boss。 抛出诱饵: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 大脑最先下意识想到的是,遍历所有数据,找出满足条件的这两个值,俗称暴力破解法。 解法一:暴力破解法 让目标值减去其中一个值,拿着差去数组中查找匹配是否存在,如果存在则返回下标。 /** * 解法一:暴力破解 * @param {number[]} nums *

换个地方工作就会变好吗?

雨燕双飞 提交于 2021-01-22 13:01:09
前几天有个小伙伴,给小鹿发来一个私信。 但是和这个小伙伴简单聊了聊。过了几天,我觉得其他人当前可能也会面临这种问题,所以打算在公众号分享下自己的一些看法。 有些时候,我们做着当下的工作时间一长,感觉每天都在做重复的劳动力,第一,让人感觉当前的工作没什么意义;第二,工资少,没有提升,怀疑是不是所处当前环境的因素呢,所以有部分人选择跳槽换工作,换了工作后,发现还是之前的状态。 这时候辞职并不是一个明智的选择,但是也不能这么绝对,裸辞也好,跳槽也好,我们追求的是一个稳,不能太大的冒风险裸辞,这也是很多人建议你不要裸辞的原因。 上边小伙伴说自己所在的岗位没有提升,从而打算想换个工作,但是我却不这么认为,其实每个岗位都有提升的方向,我们有时候可能认为,每天干着重复的工作,似乎没啥提升,再干个两三年也就这样,只不过是工作经验和年限增加了。 所谓的提升,不仅仅是技术上,也包括个人处理事情能力上,工作效率上,以及沟通能力上等。 比如,每天重复的工作考虑下能不能提高效率?公司的业务能不能进行写一个组件库,做到公司各个团队和部门做到复用,再往大出做,就是公司各个部门之间能不能做到简化开发,提高各个部门的处理事情效率?这都可以作为提升的一部分。 说的绝对一点的话,没有说哪个公司各个环节都是非常完美的,前几天和大公司的朋友聊天,谈到了他们团队目前面临的一些问题并不是单单技术上出现的问题,团队上,业务上等。

What is 测试金字塔?

感情迁移 提交于 2021-01-22 10:10:05
【答疑解惑 】 | 作者 / Edison Zhou 这是 恰童鞋骚年 的第 271 篇原创内容 我的女朋友是一名测试工程师,但她之前却不知道测试金字塔的概念,为此我曾经在家里的白板上画了一个图一层一层给她讲解过。我和同事在给团队面试测试和开发岗位时,也会必问到这个问题,想到可能有很多开发童鞋都不知道,这里我就用一篇推文给大家科普一下。 1 传说中的金字塔 我们都知道,针对项目的测试有很多分类,比如单元测试、集成测试、组件测试、端到端测试 以及 探索性测试等。那么,测试金字塔其实就是给我们的一个指导,它指导我们要在不同类型的测试工作投入多少的精力是最合适的。 废话不多说,先上图: 测试金字塔示意图(来自波波老师的课程) 从上图中我们可以看到,测试金字塔建议我们: (1) 尽可能地多做单元测试 和 集成测试 ,因为他们的执行速度相较于上层的几个测试类型来说快很多且相对稳定,可以一天多次执行。一般来说,我们都会将单元测试 和 集成测试 做到持续集成构建任务中去,比如放到Jenkins中每天定时执行1~2次,或者每次push代码到git仓库后执行,总之,就是要确保可以频繁执行以确保代码质量。 (2) 尽可能地少做 组件测试、端到端测试 和 探索性测试 ,因为他们的执行速度相较单元测试 和 集成测试 会慢很多,且不够稳定,无法做到一天多次执行,每次执行都要等很久才能获得反馈结果。但是

php经典算法面试题

我的梦境 提交于 2021-01-22 09:40:05
原文地址: https://www.woozee.com.cn/article/35.html 1、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。 function king($m, $n) { if (1 >= $n) { return $n; } $monkeys = range(1, $n); $count = $n; while ($count > 1) { $remainder = $m % $count; unset($monkeys[$remainder - 1]); $monkeys = array_values($monkeys); $count--; } return array_shift($monkeys); }    2、有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。 function cows ($n) { $cows = [1]; for ($i = 1; $i <= $n; $i++) { // 新出生的牛 $new_number = 0; foreach ($cows as

华为漫画科普:什么是DSP?

拈花ヽ惹草 提交于 2021-01-22 07:47:41
来源: 「 华为麒麟 」 今天,科普场景回到了SoC内 除了大家熟悉的CPU、GPU、NPU等 SoC内还有一位声名在外 却鲜少出现在大众眼前的成员——DSP DSP到底是什么? 一起来看看吧 ↓↓↓ END 往期精彩回顾 (👇 猛戳可查看 ) 校招笔试题合集 数字IC设计经典笔试题之【FPGA基础】 数字IC设计经典笔试题之【verilog篇】 数字IC设计经典笔试题之【IC设计基础】 硬件工程师面试题【1】 硬件工程师笔试题【2】 有了这份面经,麻麻再也不用担心我找不到工作了! FPGA合集 跨时钟域处理3大方法 FPGA信号截位策略 FPGA中的亚稳态 FPGA芯片结构 FPGA FIFO深度计算 FPGA奇数分频 竞争冒险现象及消除方法 “ 一网打尽 ” 二进制、格雷码、独热码编码方式 DDR3 IP 核配置 DDR3 IP核仿真 行业动态合集 【 思考】数字IC设计工程师的发展前景如何 中国芯片设计企业与薪资榜单 雷达信号处理合集 雷达信号处理基础之【相参积累处理】 雷达信号处理基础之【恒虚警处理】 雷达信号处理基础之【单脉冲测角处理 】 雷达信号处理基础之【雷达LFM信号分析】 闲聊 【夜读】三十岁前,一定要坚持的几件事 知识星球 $display (" 点个在看吧! ") 本文分享自微信公众号 - 数字ICer(Studying_Times)。 如有侵权,请联系

LeetCode

别说谁变了你拦得住时间么 提交于 2021-01-22 02:50:24
一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 解题及测试 四 LeetCode Submit 五 解题思路 二 前言 难度 :简单 涉及知识 :图 题目地址 :https://leetcode-cn.com/problems/find-the-town-judge/ 题目内容 : 在一个小镇里,按从 1 到 N 标记了 N 个人。 传言称,这些人中有一个是小镇上的秘密法官。 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人。 每个人(除了小镇法官外)都信任小镇的法官。 只有一个人同时满足属性 1 和属性 2 。 给定数组 trust, 该数组由信任对 trust[i] = [a, b] 组成, 表示标记为 a 的人信任标记为 b 的人。 如果小镇存在秘密法官并且可以确定他的身份, 请返回该法官的标记。 否则,返回 -1。 示例 1: 输入:N = 2, trust = [[1,2]] 输出:2 示例 2: 输入:N = 3, trust = [[1,3],[2,3]] 输出:3 示例 3: 输入:N = 3, trust = [[1,3],[2,3],[3,1]] 输出:-1 示例 4: 输入:N = 3, trust = [[1,2],[2,3]] 输出:-1 示例 5: 输入:N = 4, trust = [[1,3],[1,4],[2,3],

最重要的事,都是你不知道的事

僤鯓⒐⒋嵵緔 提交于 2021-01-21 14:46:35
最重要的事,都是你不知道的事 一 最重要的事,都是不知道的事 因为 对于很多领域,我们的问题都不是“不知道”,而是“不知道自己不知道”。 比如,我碰到一些传统行业的人,看互联网行业都是“点子思维”,他们看到出现了微信,就一拍大腿:你看,这个想法我也有过,可惜我没钱找人实现。 这种现象还很普遍,我认识的一个咨询顾问,看到脉脉(基于二度人脉的职场社交工具)出来之后,还跟我感慨过:呀,二度人脉这个事儿,我也想过,可惜没有团队去做,错过了。 “我有个好想法,就差个程序员”,这种想法最大的问题,不在于他们“不了解互联网”。因为如果只是不了解,那么去学习就是了。 最大的问题在于,他们“不知道自己不了解互联网”,所以他们认为事情本身简单,“点子”就是关键成功因素,所以不愿意去深入了解。 如果有两个实习生,他们能力相当,但一个人“知道自己不知道”,而另一个人“不知道自己不知道”,那未来的成长将会是天壤之别。 因为前者可以通过学习来进步,而后者花再多时间也只会原地踏步。 除了学习,情绪管理也是一样,“我在发怒”跟“我知道我在发怒”,是两个完全不同的状态。只有后者,才可能可以有意识地引导自己的行为,最终才有管理自己情绪的可能性。 所以,我们向前发展的关键,是不断去发现那些你“不知道的事”。 话说回来, 既然是“不知道的事”,那要如何发现呢?我有4点建议。 二 如何发现“不知道的事”:1)撞墙

还在用PDF做简历?落后了!

社会主义新天地 提交于 2021-01-21 13:56:47
作为一个程序员来说,简历可谓是面试的时候一个加分砝码,往往有的面试者只在意自己的技术,其实这是非常不对的。 简历对于一个面试者来说非常重要,他是第一个入口,也是面试官认识你的第一个途径。 不管是对于刚毕业或者即将毕业,亦或者工作不久,想要换工作的你,怎样把你的所学展示出来十分重要。 比如,你面试Java工程师,自己摸索学习很难达到一定水平,浪费时间的同时,学到的知识也不具体。各大厂目前对人才的目标性渴求非常强,基础能力、开发能力、优化能力,都是企业需求,在实战场景下如何应用,也成为了你进入名企的门槛。 大厂项目研发经验非常重要。 但是,当你在面试的时候带着一个实操项目去,那么,就一定会惊艳到面试官。 而我今天要推荐给你的就是这样一个完整的项目,让你自己敲写一个属于自己的个人主页。 这个主页并不是简单的拿一个软件生成,亦或者简单敲敲代码就能制作成的。而是具备从设计到开发、到部署上线、再到优化加速等,完整流程的项目。 由开课吧Java高级开发工程师打造,三天,让你完成一个让面试官眼前一亮的完整的个人主页项目,这是一个可以让你,写入简历的Java实战项目。 内容涵盖的核心技术都是当前十分热门的技术,并且项目流程完整,构建一个场景式学习体验中心,让你完全掌握Java技术的核心难点。 三天,让你学习一个完整的项目 ▼ 如果你对开课吧的训练营品质有一定的认知

997但是工作内容又没意义是种什么感觉

你说的曾经没有我的故事 提交于 2021-01-21 11:52:10
前几天做了个噩梦,梦见上家公司喊我回去加班,惊醒了,因为上一份工作是997嘛,只是没想到离职几个月了还会因为这种梦惊醒。想起来也真是可笑,上班的时候其实并没有太多感觉,过后会感觉害怕这样的工作。 干我们这个行业,加班是一定的,我相信997的兄弟肯定也有很多的,比如和我一个项目组的兄弟,他们肯定也要是997了。应该还有不少兄弟,加班强度是要大于997的。我希望看到这篇文章的兄弟也不要觉得我矫情,我矫情的不是997,而是997的时候,每天的工作内容还不喜欢。 我的性格比较佛系,然后,抗压能力是真的可以(没吹),对于加班,我也没有什么排斥呀什么的(我现在的工作时间是10 10 6, 但是很满意),但还是想总结一下为什么出现上次工作的状况。 每个人都可以做好职业规划,自己选择一份是否满意的工作,但我选错了一次。 我第一份工作大概做了3年多(从实习开始),参与的是一个某运营商的基础架构的平台建设工作,主要负责微服务相关组件的研发建设工作,对一个普通本科来说,是不是感觉我运气挺好,起点还不错。加班多的时候也就是周一二四加班到9点,然后周六可能也加班,虽然我对加班没什么太多感觉,况且加班也习惯了,但是我一直以为这种加班强度,算是比较高了。 也就是去年这时候,2020年1月底,离职了。当时还是做了不少准备,主要是算法方面,准备春节后去北上广找一些一线互联网大厂。但是刚好赶上疫情了。虽然吧