Tag: 面试技巧

十年: 力扣刷题2000天

前不久,力扣说我刷题刷了2000天,不是连续的,这个是一共刷的天数。2000天也就是5.479年。 我的力扣,欢迎围观:https://leetcode.com/u/justyy/ 注册力扣帐号是2013年10月10号,当天提交了6次。当时是在谢菲尔得/Sheffield。 后来就是断断续续,甚至有很长一段时间都没有刷,直到2019年3月2日开始才未间断刷到今天(当时拿着Ipad中午在美国通用电气的食堂里刷题)。2016年竟然4月份连续刷了25天,我已经忘记当时为啥这么有闲情逸致了。哦,当时已经搬到了剑桥/Fen Drayton了,可能在准备谷歌的面试。 019年在美国通用电气/General Electric工作的时候中午吃完饭在湖边着着IPAD刷题。 从2013年到2024的力扣刷题之路,一点点改变,一点点变好。 现在刷题是保持面试状态的好方法,就像飞机飞到高空时油耗已经减少,我希望自己能维持这个状态。每天打卡,哪怕有时只是拷贝代码,依然会稍微思考并熟悉解法和算法。每天坚持打卡还能积累积分,兑换力扣衬衫。 英文:Milestone: Leetcoding for 2000 Days 网友:以后每天比比看是cursor做得快 还是你快。 答:刷题的目的又不是比快。让脑子思考,训练脑子。 网友:惭愧,我在 GE时候天天打酱油,群主确是每天在刷题飞。 网友:看似不起波澜的日复一日让我们看到坚持的意义! 本文一共 475 个汉字, 你数一下对不对. 十年: 力扣刷题2000天. (AMP 移动加速版本) 赞赏我的几个理由. …

C++的 map 当键(Key)不存在的时候会发生什么?

在面试流程(例如筛选)的早期阶段,一位 Google 招聘人员曾向我问过这个问题。 在C++中,当你使用std::map访问一个不存在的键时,行为取决于你是如何访问它的。 使用下标操作符 访问时 如果键不存在,std::map 会默认插入一个该键的元素,并为其赋值为类型的默认值。比如,如果 map 的值类型是 int,那么它会插入该键并赋值为 0。 例子: std::map<int, int> myMap; int value = myMap; // 如果键10不存在,会插入myMap = 0 使用 at() 方法访问时 如果键不存在,at() 会抛出 …

面试后你不应该做的五件事

面试后的等待是最辛苦最紧张最焦虑的, 你花了大把时间准备, 不过面试之后情况已经不受你控制了, 你能做的就是耐心等待. 就像准备面试一样, 有些事情你应该而且不应该做. 以下是面试后你不应该做的五件事. 不要反复的回想面试情形 除非你的面试很完美, 否则面试完后再去回想面试很容易陷入一种”感觉不好”的消极情绪中. 这样可能会影响你对整个面试的判断, 也许你做的很不错, 只是有一两个不完美并不影响大局. 不要过分联系招聘经理 你可以在面试后24-48小时内发邮件感谢一下, 然后在招聘经理告诉您他们联系你之前不要再联系了. 除非你有一个非常紧急或重大问题, 否则你没有理由再联系招聘经理. 切记不要时不时的联系他们要求更新, 因为这样做很容易招人烦, 也有可能会影响你的申请. 尊重他们告诉你的时间期限, 过了那个时间, 你则可以再联系一下. 不要停止投简历更不要裸辞 不要停止投简历, 直到你拿到了Offer. 更不要裸辞, 再拿到工作合同前, …

软件工程师数据库面试技巧之 SQL中的第二名记录

现在最吃香的工程师是 全栈工程师 (Full Stack), 因此你除了要好的算法数据结构知识外 你还需要懂数据库等计算机知识. 有人说, SQL好简单, 其实SQL也可以考考你的逻辑, 比如有这么一个简单的 (含有两个字段, 三行记录) 的关系表 (假设表名为 Employee). 对了, 数据工程师/Data Engineer, 还有相关的一些职位: Machine Learning Engineer/机器学习工程师等 都会需要面试SQL. +----+--------+ | Id | Salary | …

软件工程师面试技巧之: 动态规划/整数拆分

动态规化 (Dynamic Programming) 是个计算机领域里很重要的算法,我在高中参加过三次信息学奥林匹克竞赛 (ACM),每年必有一题用动归(DP)来解答. 动态规化其实就是 把问题分解成子问题+记忆子问题求解的一个过程. 你如何教你的孩子DP是什么呢? 比如:你给你的孩子5根火柴,你的孩子数了数然后说有5根.然后你再给你的孩子1根火柴然后问一共有多少根,这时候你的孩子会马上说出6根,因为他知道已经有5根了,再加上1根就是6根. 原理就是:把问题分析成更小的问题,并分而求之,子问题的解会被保存下来这样在求解更大的问题的时候就不需要再重新把中间结果再算一遍了. 动态规化的解法经常是较优的一种解法,我们来看这么一道面试题: 给定一个正整数,将它拆分成至少两个正整数,求出这些正整数的最大乘积.比如 整数2,可以拆分成1+1, 乘积是1,当输入是10,需要分解成3+3+4,这样所得的最大乘积是36. 你会怎么解?暴力搜索?这种解法不好写,而且时间复杂度也大.可以用回溯+剪枝,但时间复杂度也相对较大,特别是当N较大的时候也会时间太久Time Exceeded. 动规解答这题就较为简单.这题并没有让你详细写出怎么拆分的方案,只需要解出最大的乘积即可.所以我们有以下的方案: f(n) = max(f(n), max(i – j, f(i – j)) * j)) for …

软件工程师面试技巧之 如何检查数独的有效性

前不久写的这个 软件工程师面试技巧 的系列, 朋友很喜欢, 所以我打算把我毕生所学(哈哈)整理整理分享于大家,望喜欢.另:我觉得:分享就是一种再学习的过程. 去年 Google 的面试题 – 打印消息 软件工程师面试技巧之 使用哈希表降复杂度 给定一个数独,我们要检查是否有效.一个有效的数独横的竖的都只出现1-9的数字各一次,并且9个小宫格里的数字也只出现1-9各一次. 你能快速的告诉我以下是否是个有效的数独么? 我们只需要检查给定的数独中已经填好的数字.最好的方法就是通过 C++中 STL 的 unordered_set (未排序的集合) 来保存已经出的数字.记得检查下一个9宫格或者行或列的时候清空集合便可. // https://justyy.com/archive/4998 class Solution { public: bool isValidSudoku(vector<vector<char>>& …

软件工程师面试技巧之: 使用哈希表降复杂度

最近在刷题, 倒不是为了找工作, 主要是为了练练脑子, 日子过得太舒服, 人脑不动容易变笨. 程序员应该都了解并能熟悉使用 Hash 哈希表, 哈希表的插入和查找时间复杂度是O(1), 空间复杂度是O(N). 我们来看一道简单的面试题: 给定一个数组,找出相差为2的数对,比如: {1, 3, 5, 6, 9} 输出为: (1, 3), (3, 5) 拿到这题的时候 第一感觉是 暴力是否可行? 暴力搜索 复杂度为 O(N2), 大概代码如下: …