专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

面试笔试算法题 面试算法题是手写吗

ins518 2024-10-04 23:31:12 技术文章 9 ℃ 0 评论

发起了无数沟通,终于溅起了一点水花,但是需要先笔试,笔试失败了,以下是笔试的题:

第一题(必答)

要实现对系统运行中的错误和用户行为进行统计,通常会采用上传日志的方式。鉴于日志产生频繁,我们需要对日志进行本地缓存处理。为此,我们可以设计一个代码段,其中包含两个参数:timer 和 count。其中,timer 表示每隔多少秒后将本地日志上传一次,而 count 表示累积多少条日志后进行一次上传,请设计一段代码来满足以上需求。

提示:

1. 前端不能使用 setinterval

a. 后端建议写成一个日志类,能在整个项目中使用而不影响性能

第二题(必答)

有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。现在给一串数字(数字长度不超过 20),请返回所有可能的译码结果,比如:

输入:"11",返回值:"aa"、“k”,

输入:“113”,返回值:“aac”、“kc”、“am”

第三题(必答)

算法题:一台收割机收割给不同地块收割获得的钱不同,同时耗费的油量也不同,以下是 6 个地块的耗油量和收益的列表[(1, 1), (7, 9), (6, 10), (2, 4), (3, 5), (6, 10)],请问收割机在给定油量 n=10 (n≥1)的情况下,如何尽可能赚到更多的钱?提示:

1. 使用动态规划,从第一个地块开始计算油量 dp[1]获得最多收益,再一次计算油量 dp[n]的最多收益。2. 上述答案为 16 。

第四题(非必答)

开放式题目:现有一个论坛的贴子列表功能设计,已知如下数据量以及具体功能需求:1. 数据量比较大,每页 100 条,50 万页(5000 万条数据);

2. 贴子的排序根据用户的点赞量从高到低排序;3. 贴子的列表页访问用户多,流量大。

问题: 请合理设计贴子列表架构方案 ,要求如下:

1. 把技术相关的约束条件(即技术上的要求,从业务需要、安全、性能等方面)列出来,越详细越好。

2. 结合上面的约束条件,从以下方面给出您认为最好的解决方案(采用哪些技术手段及关键的算法策略)。

a. 分页处理逻辑

b. 排序算法策略

c. 缓存逻辑

d. 异步加载逻辑

e. 数据索引处理

f. 【选答】分布式架构

3. 备注:直接使用数据库分页是不符合业务要求,不考虑。

第五题(选答加分项)

请在上述 4 道题中,选择其中一题,尝试用 ChatGPT 来解题,比较 AI 代码和自己的代码的差异?说出其中的优缺点,并给出如何借助 AI 提升开发效率的思路;

我的部分解题思路:

第一题:不影响性能,那必须考虑异步刷写,包括两部分,第一是写入本地缓冲区;第二是写存储(本地文件、远程日志服务等)

第二题:需要考虑边界问题,比如A:912,则只能拆成9,1,2或9,12;B:120,只能拆成1、20,因为0单独无解,同理102,只能拆成10、2,所以在递归或者规划的时候要考虑后面的数字能否单独解。

第三题:其实是子序列的问题,给定一个数列,数列中的子序列和小于等于N的可能,这N种可能的收益,再排序,就拿到了最大收益组合。

第四题:个人观点,重点在深分页,用ES,也会遇到深分页的问题,同时因为点赞量可能大量的帖子是一样的,也就是可能有4000万的帖子的点赞量是集中在0-10的情况,所以瀑布流方式通过大于小于某个值的形式,也是不通的。计算了下,帖子ID假设是int64的,则5000万帖子ID大约需要800M的存储空间,个人解决方案:

方案一:使用redis有序集合,设计一个评分公式,根据点赞量和二级排序条件,比如创建时间先后,计算每个帖子的评分,将ID和评分存到有序集合,每次先从有序集合拿出主键,再根据主键批量去取列表的基本数据,基本上常见的流量,比如1万QPS都没问题。

方案二:静态化,大量用户其实只会考虑访问前10页的内容,很少访问后面的数据,则可以在方案一的基础上,将前10页的数据进行静态化,也可以说缓存处理,当帖子的点赞发生变化时,异步将一定时间窗口内的数据重新刷新缓存或静态文件即可。这样基本上压力数据库已经无压力,可以轻松应对10万级别的QPS,甚至100万级别。

方案三:自己设计一个排序服务,替代redis的有序集合功能。需要考虑单点问题,如果是集群,需要考虑集群之间数据同步问题,过于复杂,不建议。

第五题:个人一直有在用GPT,但是说实话,业务逻辑不太重的简单的东西,确实不错,只要业务逻辑比如重的,生成出来的可能都漏洞百出,有时候反复沟通的成本,不如自己写来得快。目前个人觉得把他用来替代搜索引擎是很好的选择,比如你要搜索antd实现一个弹窗,或者表单检验,用谷歌搜索出来很多都是无用的,相反GPT 准确率很好。我选择了第二题让GPT解,写出来的代码,解码是错误的。没考虑到边界问题。

欢迎大家指点,为我后面的面试提供意见。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表