谈一谈面试算法的几个常见误区

news2024/12/23 5:48:04

下一篇我们就开始梳理面试算法的体系了,今天呢,有个问题有必要谈一下——如何正确对待算法,如何征服算法。

目录

1.如何平常心对待算法

2.关于准备算法面试的一些误区

1.如何平常心对待算法

在老师之前算法班的群里,有位同学分享过一个让人震惊的信息。他说一个女孩去面试,在简历的个人优势部分里写自己不孕不育,不需要产假。这个是优势吗?我问几个女同事,她们竟然对此表示认同,至少不反对。很多女生面试时也会被反复问及家庭和婚育方面的问题,甚至因此过不了面试,可见职场多么残酷!可问题是,不孕不育是亮点吗?我们是求职,但不是牲畜,也不是机器。每个人都有追求幸福的权利,为了家人、为了孩子, 我们更有动力去工作。这个女孩内心一定会有深深的失落,但这种失落不会化为认真工作的动力,只可能变成熬时间的浑浑噩噩。

认真只能将事情做对,用心才能将事情做好。如果我是她老板,会鼓励她该看病就请假看病,回来就认真工作,只关注考勤和工作时长的公司不是好公司,特别是重在脑力劳动的互联网公司。 

这件事也告诉我们想打造一个亮点是多么难,在简历上加一条要付出多大的代价。那问题说回来,什么才算亮点呢?我们知道社招面试会考察三个显式方面:项目、技术和算法。还有两个隐式方面:学历和上一家公司的档次。 显式的意思就是面试可以聊,而且能直接反应你客观水平的。隐式条件是双方不会怎么说,但是大家心照不宣,而且你也无法改变的。所以,项目经验丰富是亮点,技术水平过硬是亮点,算法能力强是亮点、学历高学校好是亮点,上家公司好也是亮点。面试就是战场,将所有的亮点摆出来,就看谁能到最后。

能否面试成功、能要到多少的薪资 ,很多时候是看你值多少钱,而不是多么能加班。经常在各种群里看到抱怨如何如何被歧视,参加线上交流的时候几乎每次都有人问两个隐条件,平时也经常有人反复问:想去大厂,专科有机会吗?外包有机会吗?小公司有机会吗?等等。事实上,告诉你有和没有有啥区别吗?你能做什么吗?什么都做不了!可以告诉你100个没有机会的理由,也可以告诉你100个有机会的例子,我至少有五位同事都是普通学历,但是进了微博美团等大厂。你会花几年重新高考吗?你能让时光倒流,重新冲击大厂吗?如果不会,纠结这个问题有什么意义呢?

学历歧视是普遍存在的,只是没有哪个公司敢直接说而已,各行各业都这样,大家都心知肚明。爱美之心人皆有之,如果选择贾玲和杨幂做你老婆,你会选择谁?我们都知道贾玲非常优秀,非常幽默,人品又好,还很会挣钱,所以我选择杨幂,原因就一个:杨幂漂亮!如果两个求职者面试情况非常接近,一个是阿里来的,一个是某个谁都不知道的小公司来的,你更想要谁?这是人的本性,我们无法改变。如果换位,我们也可能是那个我们讨厌的人。

相对而言,研发岗位更注重真才实学,即使你学历高学校好也不见得就一定能行,如果技术不清不楚,算法也写的不好,那学历就是个摆设,机会还是没有,这种例子也非常多。另一方面,很多公司在缺人的时候会降低隐性要求,给你一个面试的机会。那接下来就看你面试的表现了,项目水平、技术深度和算法能力就真刀真枪来一遍。遗憾的是很多人在面试过程中软绵绵的,技术说不清楚,算法写不出来,甚至直接放弃,那对方怎么给你机会呢?

都知道算法很难,但是要去大厂、要拿高薪,这是必须要过的坎。

遗憾的是很多人 ,发完誓之后就不见了。

不少人快面试的时候才想起来算法弱,然后急着问怎么办。别人能怎么办?要是3天就有办法解决,那老师的课就不是几百了,而是几万,我相信愿意来的人更多。

之前互联网行业行业整体是缺人的状态,机会很多的,但是近几年情况发生了很多变化,互联网虽然不到“前端已死,后端已凉”,但是需求大幅下降。供过于求的情况下,内卷是必然,技术卷,算法也会卷,所以算法已经不是“锦上添花”的内容,而是每个程序员必须要过关的坎。

“穷则独善其身,达则兼济天下”,我们要么躺平,要么把自己锻炼成金子。我相信加入鱼群的你还是想锻炼自己的。如何面试、如何学技术,包括我们接下来要谈的算法等都是有科学的方法可以训练的,只要将相关的能力训练出来就行了。

所以如果以后再有人问起点一般有没有机会去大厂,我们就直接问他“算法如何”,如果说不会,那就直接告诉他没有机会。反之,则鼓励他,积极关注,有机会就去冲刺!

平时感觉自己还挺聪明的,一到算法就感觉智商为0, 该咋办呢?

我可以明确告诉你,面试官也是刷题过来的,大部分面试都是以常见题目为主,而常见的算法题是有限的,常考的题目类型也是固定的,因此你只要将我当成驾照一样,集中一段时间将其学会就行了。

学会这些不是要百分百过一切面试,而是做到80%以上的题目都能搞定就行了。我们的课程也绝不会说让你一定能解决所有的算法,那你需要海量的时间和精力,我们的目标就是让你用最少的时间搞清楚80%的问题,剩下的时间学技术、做项目更有意义。那如果遇到奇葩面试怎么办呢?不用怕,大不了问候一下他祖宗,换下一个公司就是了。

所以, 算法这东西就当做驾照,常见不过十几种专题,300多道常见问题,将当做要掌握的一种必备技能就行了。反之,一直回避,不想下功夫,却天天抱怨,每次换工作都要被折腾一圈,即使大厂招人,很多人也压根就没机会。

面试的算法其实没什么用的,尤其是不会在工作里用

很多人想学算法,觉得对工作非常有用,所以要学好,所以要好好刷LeetCode。我可以告诉你LeetCode里的算法是没啥用的。你在工作中有写过链表吗?有写过二叉树吗?有自己实现过回溯吗,有写过动态规划吗?反正我从来没有。因为这种代码不易扩展 ,很难维护,如果在工作中写,一定会被骂,但是在算法里是绝对的重点。

那算法有什么用呢?其实就是练习思维的游戏,说白了就是面试用的。那话又说回来,为什么面试非要现场写算法呢?因为算法是测试你是不是金子的最有效手段。这种方式不是完美的,但是最好的。

我也曾经很排斥,但是当我作为面试官去面别人的时候才感觉到为什么非要这样。从一开始我就努力识别这个人的水平到底怎么样,我会分析项目里哪些是他自己做的,哪些是他真正理解的,哪些是他背的。 但只有让对方写个难度中等的算法,看他在整个过程中的表现,我才会放心他的基本功是不是扎实的。

为什么呢?因为算法是所有程序员的共同语言。虽然都是做java,大家的行业和具体的事情千差万别,很难准确判断一个人到底水平如何,说不定他说得天花乱坠的设计,最后只是写了个if else。做CPU指令的人也不太可能懂前端小姐姐说的vue是什么。做网络的面试官可能对擅长数据库的求职者也没什么感觉。数据结构与算法就成了双方都能交流的领域,而且好坏立竿见影,不管怎么说,能写出来,能运行出来就是真功夫。对于大厂以及很多还不错的公司,算法成了面试的一个必备环节,有的面试官只有亲自考你一个才放心。

2.关于准备算法面试的一些误区

对于算法,有很多很多的论调,有的还截然相反,这里看几个。我们都不喜欢说教,但是在之前的课程中,和很多小伙伴聊的时候都发现存在一个或几个问题,这会影响学习效果,干脆就统一列举一下吧。观点没有好坏,希望能帮你进一步审视算法。

1.学而不思,思而不学

经常有人说花了3小时写了一个算法,这样不好说不好,只能说效率太低,偶尔干一干还是可以的。很多算法的方法是固定的,完全靠自己想出来费时费力,即使写出来的,不管结构还是设计上可能非常差,而且很容易就忘了,面试时即使考原题还是一样懵逼。比如在《位图》一章,我们会介绍很多技巧,这些靠自己面试时临时想出来几乎不可能。这就是典型的思而不学,还有人是另一个极端。有的人说自己刷了200题,还是感觉很迷茫,我非常怀疑他根本没有刷清楚,可能只是跑了一下别人的答案而已。如果刷过一定量的题,一定会发现大量的考察点是重复的,很多问题本质上是一个东西,所以题目是越刷越少的,甚至还能自己出题,怎么会越来越迷茫呢?那学和思怎么划分呢?我的感觉做题以半小时为界限,如果半小时后还想不到怎么做,就该找别人的解析来学习。

2.抬头仰望星空长叹,低头抱怨不断

很多人愁算法的时间比真正练习的时间更长。不知道大家在学生时代是否一直为如何学好英语犯愁,整天各种疯狂英语,各种新东方,但是一直到毕业也没将英语真正学好。为什么?一个原因就是天天喊着要学习英语,但从来没做过,更别说坚持。算法也一样。还有的人马上要面试了,才急着找个佛脚抱抱,平时根本不关心。有的人会一时兴起,随便选一道题来考察自己算法到底行不行,十有八九是失败的,因为一道题可能涉及了hash,涉及了树,涉及了递归,结果你连怎么定义树节点都不知道 ,怎么可能解决呢,最后必然是打击自己。这就好比很久没运动了,突然让跑一万米,谁能跑下来?

3.总想着一步登天,一劳永逸

有的人想着从0开始,于是就找了本厚厚的数据结构书看。但是大部分人会对这类书没什么感觉,更不会坚持看完,于是没多久就不了了之。有的人发誓将leetcode全部刷完,彻底解决算法问题,然后从第一题开始向后刷,要知道LeetCode里靠前的题目普遍比较难的,因此费劲好大也没刷几道,信心没有了,不想刷了,甚至心生畏惧,最终算法成了过不去的痛。有的人希望算法能达到熟记的程度, 抬手就能来,这是不可能的,我们重点在于理解清楚,面试的时候给你点时间就能想明白、写出来,而不是全部熟记才算。

还有的人总是感觉动态规划才叫算法,回溯才叫学算法,而不重视基础问题。其实是认为高难度题目都会了,基本问题还是事吗?

这就像总想着取到白富美, 对自己身边的女孩漠不关心,那注定孤独一生。面试过程中大部分算法是以基础问题和变型问题为主的,有点难度,但是不会难于登天。如果只盯着难题,往往会难题搞不清楚,基本问题又不会,也许这就叫走火入魔吧。

4.因为别人的外在吹牛而焦虑

例如喜欢看一些如何刷算法的毒文章,有些会推荐一堆的书,特别是《算法导论》。我觉得这种人真该死,因为这本书虽然叫导论,但比一般的算法书要难很多,没有足够的数学功底根本看不了。起点不高的人看了会迅速失去信心,因此这类书对大不部分人来说根本不适合,这种毒文无疑也让人坚信算法天生是难的,更别说乐趣。没有乐趣的学习,注定无法持久的。还有人对群里那些炫耀特别敏感,有些面过大厂的人为了提高自己的逼格,会极度渲染面试的紧张,比如30min必须写完,要当着面试官的面写完,远程时面试官盯着你的桌面让你写等等。

事实上,在面试官面前写算法,如果你一直没有思路,有些面试官会提醒你的。如果你的思路有问题,他也会提醒的,方案没有问题才会让你去写,这无疑会降低你写算法难度的。所以面试官盯着你,你就当成一个高手在指导你就行了,何必这么紧张。那些人渲染面试多么紧张会给别人带来极大的恐慌和焦虑,所以这种人我是看到一次怼一次,绝不客气!

5.总感觉以后在工作中多积累一些算法就行了

事实上面试算法和工程算法的侧重点是完全不一样的,相互之间的关联非常少。我们在后续章节中会看到大量这样的例子,例如工程中会大量使用Hash,因为简单好用又稳定,但是很多算法一旦使用Hash就没有含金量了。所以在面试算法里,Hash只是个备胎,只要有其他思路一般就不用了。在工程应用中我们追求的是易用性和稳定性这些,而算法更多考察思维能力而不怎么管是否能用。所以必须针对面试算法做一定的积累,指望工作中积累只会是幻想。

6.工作事多、平时很忙,没时间学习

别说没时间,因为这只是借口,对自己不够狠。这个我们前面介绍过狠人是怎么干的,今天再说一个例子,我读研时,实验室里曾经有位博士,有机会去斯坦福大学。当时他只有3个月的时间来准备英语,还有科研任务在手,而当时他连英语6级都没过,怎么可能在3个月内达到要求呢?于是他报了新东方的培训班,坚持上课学习,然后每天早上5点起来练英语,就这样一直坚持,直到考完。后来回国后,一个公司给开年薪150W,结果人家没看上。

你觉得让他脚本会更快吗?让他做需求会更好吗?加班时间会更长吗?那凭啥人家的薪资是我们的几倍甚至十几倍?因为他档次高!关键时刻他能顶住压力做到常人做不到的事。薪资水平不仅仅取决于工作时长,更多是自己的档次和展现出来的能力,让人相信你值这个价。一直强调自己能加班,反而显得自己技术水平不够。虽然大部分都不会在工作中用,但是算法本身就是思维能力的一种证明。不会做就不给加钱,做出来就敢多要几千,就这么简单。

7.试图能通过硬背答案来解决算法之痛

算法有没有模板?有的,而且还很多,越是高级的算法越有模板,例如二分查找、各种牌组方法、数字、位运算、双指针、滑动窗口、回溯、动态规划等等都有自己的模板,而前缀树、线段树、堆、平衡树等等本身就是一套规则,理解规则了,题目几乎都不用做。

既然有模板那是否可以背一下呢?那就错了,模板是思想一致,解题思路一致,而具体的代码则千变万化,不可能记住的。而且稍微换一下条件就可能修改好多代码,因此靠背答案是没有任何意义的。比较靠谱的是先透彻理解算法的思想,一题一题做,将技能和技巧总结出来,最后将题目归类总结出本类型题目的解题套路,这就是模板,我们后面几乎每个章节都是这种方式进行的。

8.能不能考个证,然后面试就不用面啦?

我曾经试图找各种算法的误区,一次上课直播的时候,一位同学的问题让我瞬间懵逼“有没有算法的证啊”。我就问他为啥要考证,他说这样可以证明自己算法确实过关了,然后面试的时候就可以不用写了。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3创建项目(五)vite配置端口号

Vue3配置代理跨域和服务端口等配置,可以在 vite.config.js 进行配置。(类似用 vue-cli 的 vue.config.js) https://cn.vitejs.dev/config/第一步:首先在根目录下面创建vue.config.js import { defineConfig } from vite import vue from vite…

CubeMx打不开/不兼容大于java8的解决方案

最近在学习stm32,需要用到cubemx,但是软件都装好了却死活打不开 最后才发现是java版本的问题,cubemx只支持java8(至少java14,16,17,20亲测都不行) 于是便把java8又装了回来,但是又有新问题 不知道为什么,即便环境变量已…

Hologres弹性计算在OLAP分析上的实践和探索

作者:王奇 阿里云Hologres研发 简介: 1、本文介绍了OLAP分析在大数据分析中的位置 2、分析并介绍目前大数据OLAP遇到的分析性能、资源隔离、高可用、弹性扩缩容等核心问题 3、解析阿里云Hologres是如何解决极致性能、弹性、业务永续、性价比等核心刚需的…

从0到1 关于MySQL的数据库和表

一个字:细腻。 目录 1. 下载和安装MySQL及其可视化工具 2. 启动MySQL和客户端连接 3. 创建和查看数据库和表 1. 下载和安装MySQL及其可视化工具 下载和安装MySQL推荐博客: mysql数据库安装(详细)_体会!的博客-CSD…

Idea部署 web项目时出现404问题

新手开发过程中发布项目可能会遇到这种问题,看到404,证明代码没有问题,地址有问题。 解决方法:(此解决方法适用于,发布程序后首页能正常显示的情况下,点击任何菜单直接404) 先看发布…

【NoSQL之 Redis配置与优化】

目录 一、关系数据库与非关系型数据库1、关系型数据库和非关系型数据库区别(1)数据存储方式不同(2)扩展方式不同(3)对事务性的支持不同 2、非关系型数据库产生背景总结 二、Redis简介1、Redis 具有以下几个…

数据库实验—触发器

为Students创建一触发器,并给出正反实例的SQL语句:当插入或修改一条学生记录时,确保此学生的入学年龄在14~40岁之间。 create trigger TRIGGER_Stu on Students for insert , update as declare age int select ageyear(getdate())-year(Sbir…

微信小程序——二维码推广海报

&#x1f60a;博主&#xff1a;爱学习的Akali King &#x1f60a;本文核心&#xff1a;本地图片和接口返回二维码制作一体化canvas海报 目录 创建一个画布通过canvas API绘制图像细节1 长按保存细节2 创建一个画布 在微信小程序中&#xff0c;我们使用<canvas>标签来创建…

微信小程序web-view嵌入uni-app H5页面,通过H5页面跳转其他小程序如何操作?

1、H5页面代码 wx.miniProgram.reLaunch({ url: /pages/index/index?appId${您的微信小程序appId} });//触发小程序刷新页面获取appId 微信小程序appId查看方法&#xff1a; 1&#xff09;有后台登录权限的情况下&#xff1a;登录微信公众平台后&#xff0c; 微信公众平台微信…

linux——在VMware Workstation中配置固定IP

第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 切换到root用户下&#xff1a;用vim打开文件&#xff0c;进行上面五处修改。 改动后的文件为&#xff1a;

C++刷题第三天

203 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 解题思路…

python3开发-火车票分析助手

目录 背景 思路 步骤&#xff1a; 代码示例 总结 背景 随着人们出行需求的增加&#xff0c;火车票的购买和使用变得越来越普遍。然而&#xff0c;对于火车票的信息和数据进行分析&#xff0c;可以帮助我们更好地了解旅行趋势、优化行程规划等。而Python是一门功能强大的编程…

finalshell使用方法,前端vue更新服务器项目

首先我们看看finalshell的整体 上面是xshell一样&#xff0c;可以输命令 上面是WinSCP一样&#xff0c;可以直接拖文件&#xff0c;下载&#xff0c;上传&#xff0c;可视化视图 1.下载服务器文件 服务器文件通过Jenkins打包上去的&#xff0c;首先我们把文件下载到本地 点击…

skimage.io.imread与cv2.imread读取图片的通道顺序不同

先说结论 skimage.io.imread读取的通道顺序为RGB, opencv读取的通道顺序为BGR。 在基于通道处理数据时注意区别。 示例如下&#xff1a; 对于一张彩色的村庄鸟瞰图&#xff0c; 其中道路为蓝色&#xff0c;我们提取出蓝色通道 并将其转为二值图输出&#xff0c;已验证提取出的…

深度学习视角下的视频息肉分割

结直肠癌(CRC)是全球第二大致命癌症和第三大常见的恶性肿瘤&#xff0c;据估计每年会在全球范围内造成数百万人发病和死亡。结直肠癌患者在第一阶段的生存概率超过95%&#xff0c;但在第四和第五阶段却大幅下降到35%以下。因此&#xff0c;通过结肠镜、乙状结肠镜等筛查技术对阳…

mysql基础1——发展起源、数据类型、基础安装

文章目录 一、基本了解1.1 DBMS数据库管理系统1.2 主流关系型数据库1.3 数据表概念1.4 关系型数据库的组成1.5 数据类型1.5.1 数值型1.5.1.1 整数型1.5.1.2 小数型 1.5.2 字符串型1.5.3 日期时间型1.5.4 枚举型 二、yum安装mariadb三、二进制安装mysql 一、基本了解 前提背景&a…

Flutter嵌套地狱

override Widget build(BuildContext context) {return Column(children: <Widget>[Container(height: 45,child: Row(children: <Widget>[SizedBox(width: 30,),Icon(Icons.notifications,color: Colors.blue,),SizedBox(width: 30,),Expanded(child: Text(消息中…

华为OD机试真题 Python 实现【计算网络信号】【2023Q2 200分】

一、题目描述 网络信号经过传递会逐层衰减&#xff0c;且遇到阻隔物无法直接穿透&#xff0c;在此情况下需要计算某个位置的网络信号值。 注意&#xff1a; 网络信号可以绕过阻隔物array[m][n]的二维数组代表网格地图&#xff0c;array[i][j]0代表i行j列是空旷位置&#xff…

大众点评搜索基于知识图谱的深度学习排序实践

转子&#xff1a;https://tech.meituan.com/2019/01/17/dianping-search-deeplearning.html 1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口&#xff0c;是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样&#xff0c;并且由于对接业务种类多…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第十八章 网络监听及防御技术)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、网络监听概述1、网络监听概念2、相关网络基础 二、监听技术1、局域网中的硬件设备简介2、共享式局域网的监听技术3、交换式局域网的监听技术 三、网络监听工具举例1、Tcp…