为面试刷算法?隐藏在系统里的数据结构,影响巨大!

作者: 极海Channel分类: 计算机技术 发布时间: 2023-09-07 11:32:36 浏览:12939 次

为面试刷算法?隐藏在系统里的数据结构,影响巨大!

德邦总管斯奎因:
算法对业务影响不大,数据结构不懂就真的g 了。数据结构在我看来是一套通用的解决方案,一般算法都包含在里面了。而算法在实际应用开发中往往需要做修改,如果不熟悉的话还不如不用。而算法猛的人日常生活中必定是坚持学习的,我觉得这也是考察的一点而不是真的需要你会算法。[doge]

【回复】回复 @极海Channel :都一样的,自从上次面试架构被个秃顶老哥怼设计后,我系统设计变得以需求定指标而不是技术定指标[doge]不是从算法中来就是从被怼中去[doge]
【回复】做工程的,有时候写挑选数据逻辑某些简单算法就自动出来了,难的那些我也学不会[笑哭]遇上OOM开始考虑空间问题,时间多了考虑时间问题,都是项目遇上啥开始搞啥。 之前公司业务单一,又有钱,加机器可以解决大部分问题。现在小公司,好多业务,之前UP讲过的访问量那个也遇上了,预期访问量每天几十上百万,直接上redis的hash和hyperloglog,但周期选择去重用户+观看时间又要保留,存储缓存服务器自己搞费用还是上千元,直接用某度的统计,代码直接白写[吃瓜]
【回复】公司真实案例:数据结构不熟的一个高级工程师,写一个功能模块50w数据算了13个小时没出结果,稍微优化一下1分钟出结果[doge]
容_时:
我不是这方面的专家,我的看法是系统访问量大且必须的用很多算法来解决实际问题的一般都是大公司。即使不是大公司,这种项目的招聘时对学历要求也比较高,而大部分公司的项目访问量并不大,像几十个人的公司做的项目每天总访问量10万,平均到美每秒更少,而这些公司学历要求没那么高。综上,你学历能够到大厂或者你们项目比较大要用,那一定要学。如果学历很低,建议把学算法的时间拿来提升学历。因为你学历低,会算法也没有多少用武之地。以上是我的拙见,正如我一开始说的。我不是这方面的专家![脱单doge]

【回复】是啊,我们就是!去年心辛苦了做了两个系统,其中一个废弃了,没使用了,另一个今年需求大改,全部翻新重做!
【回复】求生欲打满是吧[妙啊]我也大致认可你的看法,大部分PM拍脑袋的需求,一顿操作猛如虎上线没人用的环境下,数据结构?不存在的[OK]
【回复】比较赞同,像UP走高端路线的应该要求算法水平,低端路线的数据结构水平不错就行了,我遇到过民办毕业、培训后出来找工作,连菜单树这种树结构都不懂的前端,接口对接都困难。
半瓶太源井晒醋:
我看到很多人都在问订单标签的设计,我就来抛砖引玉一下。首先在订单表中添加一个标签字段tag,然后要具体看该业务设计了n种标签,理论上就是2^n位,你在业务层需要约定好每个位对应哪个标签,然后直接存储为int(如果n非常大可能需要使用bigint)即可。 举个栗子,假设设计了十种标签shopDiscount,company,useCoupons,groupBuying,double11,in618,seckill,pre-order,rebuy,limitbuy(最好设计成枚举更加安全,且可读性高),那么字段理论极限值就是2^10=1024,约定的标签位就按照上面的顺序。比如存储1010101010,字段值是682,即表示标签shopDiscount=1,company=0,useCoupons=1,groupBuying=false,double11=1,in618=0,seckill=1,pre-order=0,rebuy=1,limitbuy=0

【回复】回复 @浪浪山怀民 : 可以增加,不过每次增加的时候系统需要统一更新一次字段数据。假设增加了N个标签,就得把全部数据读出来转为bit,再把每个数据后面被N位0,再转回int存回去即可。这种设计主要考虑的是性能,也可以做预留设计,提前设计成32位一个字段,需要多少字段就添加多少字段,通常业务标签也不可能无限增长,但是如果真的业务非常复杂,标签非常多几百上千那种就不建议这么设计了,或者有自定义标签的需求时,也不能这么设计了。
【回复】我标签字段又新增了几个
【回复】回复 @想刘不离 : 限制用户自定义标签的数量会不会好点
anzzzzzzzzzzz:
“会数据结构算法的人一定能干活”,我觉得没那么一定,工程能力不是只写代码就够,业务理解,沟通,协作同样重要;我面试考察算法,做不做得出来我不关心,主要是思路够不够灵活发散,是不是有好的编码习惯

【回复】回复 @极海Channel :直接看高考成绩,或者高考数学成绩不是更简单?
【回复】回复 @极海Channel : 确实,有这能力,啥业务搞不定
【回复】可能觉得会数据结构算法脑子都比较灵光[妙啊]比较有培养价值
木木师九日:
个人觉得,考数据结构和算法可以很好的考察表达能力和思维活跃度

【回复】[吃瓜]高情商:人太多了先筛一遍。低情商:考察逻辑思考能力。
【回复】如果不去打比赛,其实体现不出太多思维逻辑,就跟刷题一样,比谁刷的熟练刷的多
【回复】回复 @极海Channel :高情商:搞错了 低情商:故意的[doge]
在风中的意志:
bitmap 如果数据类型的种类是动态的呢? 比如Map<String, String>? 类似mongodb中的存储?

【回复】[妙啊]大家感兴趣可以专门开一期讲讲标签系统设计
【回复】自定义标签, 这个做用户画像用的比较多. 1. 如果是固定bitmap. 比如哪天登录没登录. 或者固定tag 个人觉得bitmap可以实现. 2. 如果自定义标签. 采用mongodb取巧实现. 3. 另一种是存储json等结构, 但是这玩意搜索和索引就比较难了. 比如我想要自定义标签tag_abc123的, 值还有精准搜和范围搜, 挺难的, 不太好做。
【回复】回复 @极海Channel : 求求啦真的很需要
Mikesya:
标签那个场景,之前做过就是用了关系表,debug的时候发现笛卡尔积已经是结果的几倍,就没考虑过bitmap,之前听过没用过,省市县公司里就是数据字典,目录树结构,不过那哥们图省事用UUID是我吐槽的点,限流那个,一开始用时间窗口算法,评论区的前辈提醒临界点问题,后面用zset滑动窗口,但是最后觉得费事,用Redission的令牌桶,其实也是算法,好的算法功底下,同一个业务场景也能看出水平的差异。

【回复】[妙啊]数据量小,随便搞都能用,让程序员麻木了
枫落雨宁:
很多数据结构对数据库中间件理解也是很有用的。就像java的小根堆队列,修改值不会动态刷新排序,了解了才能改,很有可能碰到实际问题需要这些结构,之前做了个炒币搓单系统,真的需要这东西。再了解一下dp,简直打开了一个新世界。我们可能需要学习锻炼的是思维吧,不能只在算法本身吧[笑哭]

另一个草薙:
我听人说去大厂好像社招都要考算法,所以小公司可以不准备。大厂必须准备?

【回复】[doge]啥公司都要准备,小公司有的不考看你职位,基本不考的你搞的东西都要掉头发
【回复】大厂是一方面,主要还是高薪一般会要求,只因为大厂一般等于高薪[doge]
【回复】现在基本上都会考 不论公司规模
宝宝龙的爸爸:
程序员能写出什么样的程序,个人对业务的理解非常重要,而这一点往往比你的技术水平更能体现价值。,如果你对业务不够熟练,你很可能写出来一个“程序员写的”应用而不是使用者想要的应用。

White09060:
但确实没有哪本书可以介绍数据结构算法在实际项目中的应用场景的[doge]学完理论除了刷题,和应用实践还有点距离。

【回复】是吗[妙啊]等我成大up了我就出
【回复】我读大学的时候看过王争那个专栏还不错,叫数据结构与算法之美
水橋こむぎ:
建议再出个视频说下数据结构该如何学习呢?学习后怎么内化跟业务结合起来呢?[吃瓜]

【回复】这期三连破1500[妙啊]必出!
风涧蜂鸣:
其实我觉得通过看一个人对数据结构和算法的了解程度,是可以看出来他对技术的态度和热情的。确实一般业务很少用得上,但是要深入研究基本都离不开。

【回复】回复 @极海Channel :学数据结构和算法就不是冲着钱来的了?
【回复】回复 @极海Channel : 有为爱发电不冲钱来的么?
【回复】[妙啊]是的,刚好过滤掉一批冲着钱来的,能往上走的还是要一定热情
OGtwelve:
毕业前觉得没什么用 但是找到第一份工作后还是学了数据结构算法 学了一年力扣也就2100分 说是有用吧 也感觉没用 主要是很多业务不知道要用哪个算法 会倒是都会 就比如视频里列举的标签 我还真就是想着关联表 不过地区那个确实一个表秒了 我的评价是 低于12k的不用考虑[笑哭]

有为易阳:
以为是在订单表那存多个标签名构成一个字符串,再一想标签应该是另外有一张表,存id就行了。存bitmap确实很好,因为标签数肯定不会很大,绝对比存id存储少。

【回复】[脱单doge][脱单doge][脱单doge]
万里零零:
刷八股vs刷算法题,那还是选算法题吧。 对于真对写代码有兴趣的人,总是会不多不少去刷过各种算法题的。

【回复】回复 @极海Channel :毕竟以写代码为乐趣的人还是少啊。目标还是入职赚钱呀[笑哭]
【回复】[嗑瓜子]不能说完全没道理,写代码还是很有成就感的,大部分人只想着应付面试,少了多少乐趣

计算机 算法 开发 程序 软件 编程 互联网 笔试 数据结构 大厂

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!