文章首发到公众号:月伴飞鱼,每天分享程序员职场经验+科普AI知识!
大家好呀,我是飞鱼。
在国内的面试中,尤其是大公司,算法题已经成为几乎必刷的内容。
❝
你要是不会做这些题,基本上就别指望进那些大公司了。
那为什么会这样呢?
❝
其实进了公司之后会发现,平时工作都是CRUD的普通代码,根本不用碰这些乱七八糟的算法题。
但我们知道大厂招人根本不愁,你应聘一个职位可能就有上千人跟你竞争。
那大厂选人的时候挑啥呢?
过去,这些公司一般考的都是所谓的八股文题,比如如何优化性能,如何解决高并发问题等等。
但现在你会发现,这些题早就成了网上的八股文,每个人都背得滚瓜烂熟。
结果就是,都差不多,根本分不出水平来。
所以越来越多的公司开始考察这些算法题了。
而且算法可以很好的辨别是不是从培训机构出来的。
❝
因为培训机构会忽悠很多半路出家,有的跟理科都不搭边的人过来学计算机。
而且培训机构只会教流行框架,不会教这些费时费力但很重要的东西。
作为程序员,大家其实都心知肚明:
❝
刷题网站上那些算法题,工作当中用的很少,面试的时候能快速过关的那些人都是题海战术刷出来的。
但是现在的招聘市场,现状就是这样的。
很多中小厂,甚至有些外包面试的时候,也必考算法题,你让Java之父来面试,他也得刷题。
之前很多人说是为了考察动手能力,但是我觉得其实不是。
我觉得它更像是一种筛选机制,通过这种手段筛选出能更卷的人。
如果面试中算法题真的写不出来怎么办?
❝
如果你有一点思路,但因为某个点卡住了,可以放心大胆写,主动抛出问题,面试官还是很愿意提示你的。
没见过的难题在提示下写出来也会让面试官觉得你还不错。
如果真的完全不会,可以和面试官提出换一道题。
我一直认为,算法题的表现并不完全代表你的工程或编码实力。
❝
但不可否认,很多大公司就是喜欢通过这样的方式来筛选候选人,游戏规则如此,只能接受。
有啥其他看法,欢迎在评论区留言讨论。
❝
想看技术文章的,可以去我的个人网站:hardyfish.top/。
- 目前网站的内容足够应付基础面试(
P7
)了!
每日一题
题目描述
❝
给定两个以字符串形式表示的非负整数
num1
和num2
,返回num1
和num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
解题思路
❝
想要做出这道题,需要知道一个数学定理:
- 两个长度分别为 n 和 m 的数相乘,长度不会超过 n + m。
因此我们可以创建一个长度为 n + m 的数组
res
存储结果。另外,最后拼接结果时需要注意忽略前导零。
代码实现
Java
代码:
class Solution {
public String multiply(String n1, String n2) {
int n = n1.length(), m = n2.length();
int[] res = new int[n + m];
for (int i = n - 1; i >= 0; i--) {
for (int j = m - 1; j >= 0; j--) {
int a = n1.charAt(i) - '0';
int b = n2.charAt(j) - '0';
int r = a * b;
r += res[i + j + 1];
res[i + j + 1] = r % 10;
res[i + j] += r / 10;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n + m; i++) {
if (sb.length() == 0 && res[i] == 0) continue;
sb.append(res[i]);
}
return sb.length() == 0 ? "0" : sb.toString();
}
}
DDD实战课
课程链接:time.geekbang.org/column/intr…
资料链接:url81.ctfile.com/f/57345181-…
访问密码:3899
从0开始学大数据
课程链接:time.geekbang.org/column/intr…
资料链接:url81.ctfile.com/f/57345181-…
访问密码:3899
趣谈网络协议
课程链接:time.geekbang.org/column/intr…
资料链接:url81.ctfile.com/f/57345181-…
访问密码:3899