Ruby面试题

Python022

Ruby面试题,第1张

下面是对 Rails Interview Questions 中的

Ruby 部分的解答:

从上面可以看出,其实Proc和lambda都是 Proc 对象。

首先我们来回答第一问:怎么通过某个字段来对对象数组排序?

假设我们有一个对象数组 @users ,我们需要让他对字段 name 排序,则我们可以:

如果是在 ActiveRecord 中,则我们只需:

下面列举我喜欢的几个常用的gems及它的可替代备选方案

首先我们说明一下递归(recursive)和迭代(iterative):

递归 :一个树结构,每个分支都探究到最远,发现无法继续走的时候往回走,每个节点只会访问一次。

迭代 :一个环结构,每次迭代都是一个圈,不会落掉其中的每一步,然后不断循环每个节点都会被循环访问。

由此我们可以看出 ruby 中更加常用的选择是 迭代 ,就像 .each , .times , .map 等都是迭代循环的形式。

ruby之父,松本行弘,日本人

于 2015-03-20

这种脚本语言做大型计算,计算能力肯定是不太够的,一般都依赖于其它语言编写的高性能计算的库,比如python就有numpy/scipy/pandas/matplotlib等一系列库,这使得python比较适合进行大型科学计算,ruby也有相当的库sciruby,不过成熟度还不太够,sciruby官网上的说法是,这个库已经经过了测试,但是还没有经过实战的检验,在使用中要有可能会遇到bug的心理预期。原话如下:

Word to the wise: These gems have been tested, but are not battle-hardened. If you’re thinking of using NMatrix (or other SciRuby components) to write mission critical code, such as for a self-driving car or controlling an ARKYD 100 satellite, you should expect to encounter a few bugs — and be prepared for them.

没有一个天才不在背后付出努力,没有一个成功不在失败之后出现。身处计算机专业,不努力就会被他人赶超,同学们,卷起来吧!

1、leetcode

英文网址:https://leetcode.com/

中文网址:https://leetcode-cn.com/

估计 leetcode(力扣)大家都很熟悉了,都被推荐烂了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。

我很早就知道 leetcode,但是直到准备复试闲来无事的时候才在它上面刷了点儿题找感觉,发现上面的题型覆盖很广,像线段树、滑动数组、博弈论、扫描线等都应有具有,但是好像有的测试数据有点弱?有的题好像可以悄咪咪的水过去…

当然题目都是英文的,现在也有了中文社区,两个网址我都放出来了,还是建议大家首刷英文的,锻炼一下,一举两得,毕竟如果是搞 ACM 的话,题目都是英文的…

2、牛客网  

网址:https://www.nowcoder.com/link/rocky11

牛客网作为国内内容超级丰富的 IT 题库,各种东西看得我眼花缭乱,题库+面试+学习+求职+讨论 360 度无死角服务,堪称"互联网求职神器"。

它好就好在不只是一个刷题的平台,还是一个交流学习的平台,发个问题贴总有热心的大佬帮助。

3、hihoCoder

网址:https://hihocoder.com

网站的技术团队来自于原北大 POJ 的开发团队,至于 POJ 会在后面的篇章中介绍,反正膜拜就完事了。一些知名的大厂比如微软、百度、腾讯、网易等会在上面举办在线编程比赛,风格倒是和 ACM 比赛类似。

如果仅止步于此还不至于让我推荐,当初与它的结缘是因为 hihoCoder 每周有周赛,每月有月赛。周赛是一道题,题目比较难但是极有意思,可以很好地拓宽自己的解题思路,月赛就更厉害了,题目均出自北大等一流高校玩 ACM 的菊苣出题,通过这个的检验可以迅速定位到自己真实的水平,同时了解自身在解决问题过程中的不足。

这将是展示自我真实水平的绝佳机会。

4、HDU

网址:http://acm.hdu.edu.cn/

杭电(杭州电子科技大学)的 OJ 大概是国内最火的几个 OJ 之一了,大多数 ACMer 应该都知道(其实我想说所有来着),勿需多说,非常多比赛都在上面,比如每年暑假的多校联赛,朝鲜、外蒙等学校的队伍都会参加,想不知道都不可能。

5、POJ

网址:http://poj.org/

这个就是我在介绍 hihocoder 的时候提到过的 POJ(Peking University Online Judge),同样作为国内最火的几大 OJ 之一,它的建立时间更早,一些上古时期的题目也能在上面找到,同样 POJ 也很出名,也是我最早刷题的 OJ 之一。

6、Codeforces

网址:https://codeforces.com/

Codeforces 又被戏称为 CF,是一家俄罗斯的网站,当然还是用英文食用。这里的很好的比赛,很好的题目,很好的选手,简称"三好"。

CF 最吸引人的地方在于它那超级牛批的比赛系统,CF 上每个用户都拥有 Rating,也就是比赛积分,新用户默认为 1500 分,每次比赛就会在你的积分上加加减减,上面的比赛一般分为四种:Div1、Div2、Div3、Educational Codeforces Round。Div 的比赛一般是根据积分来的,每个积分段只能参加对应的 Div 的比赛,Div1的比赛是里面最难的,大佬基本都在这里。Educational Codeforces Round 则是类似 ACM 的比赛,提交之后立马出结果。

但是如果仅限这些也算不上超级,还有一个更有意思的是,CF 的比赛还提供一个 hack 功能,通俗点说就是你去看别人提交的代码,然后通过提交你想出的特殊测试用例然后找出别人代码的 bug,hack 成功则加积分,比赛更多了很多乐趣,在 hack 和反 hack 中斗智斗勇。

不过对国内来说,和俄罗斯存在时差,一般想参加比赛的话大多数要在晚上 11 点以后,按照基础的 2 个小时比赛时间,再加上 hack 和测评反馈的过程,然后再刺激一下,差不多一宿就这么交代了,不过其中的乐趣不足为外人道。如果没有时间,上面的题目还是可以自己拿来做的,题目质量超级好,很能锻炼自己。