楼主年后入职一家中型创业公司,上周某一天突然找我们项目组的人一个个谈话,说由于资金问题这个项目被砍掉了,团队当天解散。。。
于是才有了楼主今天下午到一家做 app 的创业公司面试的故事,上来就是一道算法题,楼主不出意料的不会做(不过后来我问过算法比较牛逼的哥们,说这题不难)。嗯,就这样,技术总监根本懒得见我,人事打发了我几句就走了。
肯定有人会说,你个搞开发的连个简单的算法题都不会,不见你也是应该的。完全同意,只是说下楼主的背景:
楼主热爱编程,也认同算法的重要性,只是觉得心里不爽,不会算法就意味着:我只要还在干这一行一天,就必须面面对今天这种人,随时可能拿算法甩我一脸,我心里好气,但又无可奈何。
请问算法如何学起,楼主文科生,数学不好,阶乘的概念都是最近才知道的,找了几本算法书,涉及大量数学公式,许多符号我都看不懂,有种无从下手的感觉,看哪本书好呢?需要复习下高中数学吗?我想过先看 可汗学院的视频,但是又不知道看哪些最有用,唉
101
Growingio 2016-06-08 14:25:54 +08:00
默默推荐一下左老师的《程序员代码面试指南》>w<
|
102
inmyfree 2016-06-08 14:28:44 +08:00
@murmur 我还真的认为 VR 能炒出点什么来,如更新中国传统课本教育为虚拟现实,游戏由平面体验改为沉浸式体验,和几年前功能机转为智能机的跨越都差不多
|
104
allce231 2016-06-08 14:47:24 +08:00
我想知道你们解散公司有钱补吗?
|
105
IAmAnonymous 2016-06-08 14:55:48 +08:00
其实看楼主面试的职位的定位。
初级:算法不用面。 中级:基本查找排序。 高级:我不行。。。 |
106
UnitTest 2016-06-08 15:08:37 +08:00
如果该公司没有保密协议 , 楼主最好把题目说出来 , 大家来看看是否是属于刁难面试者 , 还是测试基础知识的.
中级和初级职位要求较低 , 面试人数较多 , 出个简单的算法题 , 对于筛选还是有用的 . 高级的就另当别论. |
107
qianleilei 2016-06-08 15:11:31 +08:00
不就是没 offer 么,生无可恋?有这么夸张?
|
108
KgM4gLtF0shViDH3 2016-06-08 15:15:38 +08:00
@menc 确定这不是后台做的嘛。。。
|
109
menc 2016-06-08 15:31:42 +08:00
@bestkayle
这个就厉害了,这个简单的功能也要推锅。 instant search 变得太快,是不适合联网的。 你一个请求 300ms ,这 300ms 用户的输入都不一定变了多少次了 所以都是缓存过来,在自己这里做 instant search |
110
Wangxf 2016-06-08 15:42:19 +08:00
基本的几个频率较高的比较简单的要信手拈来,比如排序算法,去重算法,其他的多刷刷 leetcode 就好了,算法导论可以看,但是我认为你还没到那一步
|
111
Wangxf 2016-06-08 15:48:20 +08:00
其实你可以看看这个网站 http://www.jisuanke.com/course
|
112
Cloudee 2016-06-08 16:19:47 +08:00 via iPhone
@menc 哈哈这个我印象深刻,我在我之前公司 im 产品的 webclient 上实现过,搜索通讯录的
|
113
SmiteChow 2016-06-08 17:35:54 +08:00
不是这样的,算法讲的是思维。
|
115
qwlhappy 2016-06-08 18:09:42 +08:00
我觉得算法训练很多时候都锻炼了把自己的想法转换为代码的能力。其实很多算法看一遍就懂了,但是写还是有困难。
|
116
youxiachai 2016-06-08 18:45:42 +08:00
面试的算法..
看 july 那本面试算法..基本能够横扫了吧.. |
117
crabRunning 2016-06-08 18:56:53 +08:00
我想说我是海洋工程的,算法一点都不懂咧,好忧桑。
|
118
KgM4gLtF0shViDH3 2016-06-08 19:03:49 +08:00 via iPhone
@menc 所以百度的匹配是前台的?
|
119
wjfz 2016-06-08 19:13:17 +08:00
LZ 和我是一家公司嘛?
|
121
yxzblue 2016-06-08 21:44:01 +08:00
不就是技术总监没见你么,你和他有一腿?生无可恋都来了
|
122
raincious 2016-06-08 21:53:05 +08:00
@Cloudee
感觉不是一回事,通讯录这种东西始终是有限的集合,数据内容是可以控制的,比如至多 500 人吧,这样哪怕一个个 Levenshtein 算好速度也不赖。更何况你可以把数据下回来用多个 Trie 树来索引,之后每个树就是 O(n)搜索。 但是 Instant Search 是不一样的,我猜测应该是用户输入前几个字符的时候,后端先返回一个大批量的数据(比如 50 个),然后前端先显示几个(比如 5 个),之后用户再进行输入的时候前端根据用户的输入过滤和排序(比如用 Levenshtein 算),当前端的可用数据不足的时候(比如少于 15 个),前端再提交数据请求给后端下载另一批数据。 后端那边需要再用户输入的时候就转换好,先将中文转换成拼音,然后拆分了存进数据库,比如 北京 => bei,jing 储存的数据 Key 是:[北, 京, 北京, bj, b, be, bei, beij, beiji, beijing, j, ji, jin, jing] 值是:[北京, beijing] 用户搜索 `bejng` 的时候,数据库(比如 Redis )从 `b` 开始匹配,如果发现匹配到 `be` 之后就没有结果了(可能得有个权重阈值,过滤到一些不常用的结果),然后根据 `be`,得到[bei, beij, beiji, beijing](这个结果应该是用关键字权重来排序的,热门关键词优先),之后用 Levenshtein 得到最相似的关键字`beijing`,最后得到结果:[北京, beijing]。 当然,如果用户搜索 `bjing`,程序应该从尾部开始搜索,比如[g, ng, ing, jing, bjing],这样也可以通过`bjing`这个关键词得到`beijing`。 当然,我上面的猜测只能在用户输入了足够多正确样本的情况下才可用,面对`bjng`这样的关键词应该还是无效的。 |
123
Stupitch 2016-06-08 22:16:36 +08:00
@murmur 互联网有阶段性,移动互联网这个阶段开始往尾巴走了,除了大公司外,很难成功了(除了一些小型的个人开发者,不过也只能红极一时而已)
|
124
zhuangzhuang1988 2016-06-09 00:24:05 +08:00
@woshinidie 认同你的观点, 蛤..
|
125
laravel 2016-06-09 09:05:08 +08:00
我是材料化学专业,同样存在这个困扰,都推荐《大话数据结构》、《大话设计模式》,数学的相关知识可以查 wikipedia
|
126
x9498 2016-06-09 11:15:04 +08:00
真的差好多,你以为科班四年是白过的?
|
127
Jerry5850022 2016-06-09 13:01:16 +08:00
文科生自然在技术上有些劣势,但是你会做口译这个就是优势啊。
可以做对外的一些项目协作,没必要去做开发啊。 |
129
echo111222 2016-06-10 09:30:17 +08:00 via Android
推荐一本书,计算机科学的基础。直接图灵下载,免费的书。自己愿意留打印出来。此书中文版无纸质书
|
130
H4cK 2016-06-10 12:35:41 +08:00
够文艺的话建议转下产品经理。
|