30天修炼完成Ruby精选面试题!

我决定从学习Ruby on Rails开始着手!鼓励自己在短期间内专心学习与产出知识,为转职奠定良好的基础。

A.首先:找寻方向,决定主题

我想很多人的状况都跟我一样:想学新的东西、甚至是想转进入新的行业,但又不知道该如何入门。

我以自身的情境为例,假设我从什么都不懂的情况下出发,如何在一年后,成为能够面试成功的Ruby Junior Developer?

后来我受到启发,我决定从「最常被问到的面试题目」着手,我把学习新知识,和自己的旅行经验做连接,如同在地球上探索未知的地方一样,把题目当作地图上的地标一般的扩展知识。

如果我能成功做到的话,相信能鼓励更多台湾朋友勇于挑战自己,勇于尝试,接触更多有趣好玩的信息领域!

B.其次:分配技术写作的时间

身为马拉松跑者,我相信铁人赛就好像跑马拉松一样,比赛的身体、心理调适,是从几个月前就开始,做好充足的准备,才能大幅降低断赛的机率。

1.把写文章的生活规律化

这是我从第一个Coach(生涯教练)身上学到的,要把时间Block下来,专心做好手头上的事。我每天早上九点到下午三点到一个会令自己专心的地方技术文章写作。(还要记得规律运动、还有适时地让眼睛离开电脑休息一下喔!)

2.熟悉IT邦的技术文章发布流程

我在8月到9月这段时间,先练习文章发布,包含使用Markdown语法、草稿与Tag、截图功能上传的功能熟悉。

如同去健身房锻炼肌肉一样,一开始感到不习惯与不舒适(第一个不调节的是:我发的文章会出现轮播在站点首页,也太害羞了吧!如果文章乱写或写错的话会很羞耻的)之类的心理调适。

我也开始看Ruby on Rails项目的在线教学课程,并练习修改一些项目功能,练习调节有bug时的焦虑不耐烦(现在已经接受这是工程师的日常了~拨头发~~)以及练习自己找解答、找不出来也要练习提问与求助。

C.做好准备功夫,然后按照计划,坚持下去(vmwork)!

工欲善其事,必先利其器。任何有自己的电脑的地方就是办公桌,而在自己的网站的地方就是实验场。

1.架好环境

有一个自己的Github帐号,自己的blog和一个可以实作动态功能的网站,就像信息时代的个人名片一样,都是一个优秀工程师基本的工具。有可以自己实作测试代码的地方是很重要的,活学活用,才能了解自己到底有没有弄懂热腾腾学到的新观念与工具!

2.立马开始,坚持到底。

用行动证明一切:)我们来解题吧!

Ruby经典面试题目#01

什么是类别?What is a Class?

类别(Class)能够建立物件实体(Object instance),接收数据(data),并利用方法(method)和数据互动。

以上概念对于程序新手来说,应该会很模糊。我们要了解类别(Class),就必须知道Ruby是一款面向对象程序语言(Object-Oriented Programming,OOP)。

而Ruby的世界里,几乎所有东西都是物件(Object)。包含数值(Numeric,整数与浮点数),布尔值(True or False),字串(String),符号(Symbol,代表固定值),数组(Array),哈希(Hash),范围(Range)到模块(Module)与类别(class)。

每个物件(Object)就像一台小型的机器一样,可以「接收数据」、「处理数据」,并「传递数据」给其他的物件。

面向对象程序语言利用「可重复性」的概念来使软件功能更易于维护。例如,类别(class)具有继承(inheritance)的能力,让子类别直接继承父类别的特性。

举个class的例子试试看,并用.superclass查询父类别,了解继承关系:

class World #建立类别名称「世界」

end

class Country < World #建立「国家」继承了「世界」类别

end

tw = Country.new #建立一个新国家:番薯岛

p tw.class # tw的类别

p tw.class.superclass # tw的的类别(Country)的父类别

p tw.class.superclass.superclass # tw的的类别(Country)的父类别(World)的父类别

在当我们把以上的代码在irb跑出来,会出现:

Country #tw的类别:显示为Country

World #Country的父类别:显示为World

Object #World的父类别:显示为Object

虽然上面的代码好像拗口令,但如果以盖大楼为例就会很直观了:

tw是一楼,Country是二楼,World是三楼,Object是顶楼。

层层上推之后,到了顶楼tw.class.superclass.superclass,输出了Object,

证明从tw,到Country到World都是物件(Object)呢!

这就是Ruby的世界观:)

就算到了顶楼层Object,我们还可以继续下楼梯,用.class往回推实验下去,了解Contry的类别:

p tw.class.superclass.class #World的类别

p tw.class.superclass.class.superclass #World的类别(Class)的父类别

p“-----break-----”

p tw.class.superclass.class.superclass.class #Module的类别

p tw.class.superclass.class.superclass.superclass #Module的父类别

代码显示出来的结果如下:

Class # world的类别是Class

Module # Class的父类别是Module

“-----break-----”

Class # Module的类别是Class

Object # Module的父类别。是。物。件!万物皆物件!众生平等~~

从「模块是类别的父类别」这里,我们还可以发现,类别(Class)与模块(Module)有深厚的关系。那明天的文章就写这个吧~灵感都想好了!嘻嘻。

回到「什么是类别?」

类别(Class)能够建立物件实体(Object instance),接收数据(data),并利用方法(method)和数据互动。

那我们就来用类别、物件、实体变数,和方法,写一个开赛宣言吧!

class TingIsIronman

def initialize

@message =“I'm going to write 30 IT articles in 30 days.”#定义实体变数(instance variable)@message

end

def method

puts @message.gsub(“write”,“create”)#定义方法:`.gsub`,可以取代字串

end

end

object = TingIsIronman.new #建立物件实体(Object instance)

object.method #利用方法和数据互动(xcsjbj)

#=> I'm going to create 30 IT articles in 30 days.

第一天的练习就到这里:)希望能继续解题下去!

Day01 -Class类别 精选面试题的更多相关文章

  1. Java精选面试题之Spring Boot 三十三问

    Spring Boot Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一: Spring Boot.Spring MVC 和 ...

  2. 2019年Java并发精选面试题,哪些你还不会?(含答案和思维导图)

    Java 并发编程 1.并发编程三要素? 2.实现可见性的方法有哪些? 3.多线程的价值? 4.创建线程的有哪些方式? 5.创建线程的三种方式的对比? 6.线程的状态流转图 7.Java 线程具有五中 ...

  3. Java精选笔试题

    合抱之木,生于毫末:九层之台,起于垒土:千里之行:始于足下.赶快测测你的Java基础知识掌握的如何? 1,下列说法正确的是() A.一个文件里可以同时存在两个public修饰的类 B.构造函数可以被重 ...

  4. Java集合必会14问(精选面试题整理)

    前言:把这段时间复习的关于集合类的东西整理出来,特别是HashMap相关的一些东西,之前都没有很注意1.7 ->> 1.8的变化问题,但后来发现这其实变化挺大的,而且很多整理的面试资料都没 ...

  5. java-部分精选面试题

    JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Clas ...

  6. Javascript前端面试题

    在网上看到了一些Javascript的面试题就整理了下来,后续看到再继续补充. 面试题按类型来分,主要涉及到"技术"与"非技术"两大类,技术类别下涉及到的子类别 ...

  7. 京东Java面试题(二)

    1.set集合从原理上如何保证不重复 1)在往set中添加元素时,如果指定元素不存在,则添加成功.也就是说,如果set中不存在(e==null ? e1==null : e.queals(e1))的元 ...

  8. jQuery简单面试题

    干货 | jQuery经典面试题及答案精选 面试题来啦! 毫无疑问,JavaScript是一门如此有用,但总是被低估的一门语言. 在 jQuery 粉墨登场之前,我们曾经会写出冗长的JavaScrip ...

  9. HashMap与HashTable面试宝典

    u012233832的专栏 初生牛犊 目录视图 摘要视图 订阅 写博客,送money.送书.送C币啦   7-8月博乐推荐文章    砸BUG 得大奖 100%中奖率   微信开发学习路线高级篇上线  ...

随机推荐

  1. 如何开启 MySQL InnoDB 共享表空间和独立表空间

    修改数据库的表空间管理方式 修改my.ini文件的innodb_file_per_table的参数值即可,但是修改不能影响之前已经使用过的共享表空间和独立表空间: innodb_file_per_ta ...

  2. ORACLE 存储过程中保存用户自定义异常信息的一种方式

    1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...

  3. 关于git merge,rebase合并的差别,以及*(no branch)的处理。

    1.merge 在上篇介绍分支的时候有简单的说了一下分支的创建和合并,当时合并就是写的merge,这是依据两个不同分支的最后一次提交的commit对象c5,c7和两个分支的交叉点的commit对象c3 ...

  4. refreshContext(context)方法源码探究

    该方法目的是刷新应用上下文,是容器启动最主要的方法,其实现是一个模板方法,内容巨大,所以先看模板方法都做了哪些事,然后再细看每个方法的实现机制. refreshContext(context)方法首先 ...

  5. 你云我云•兄弟夜谈会 第二季 5G

    0. 概况 时间:2019年1月29日 21:30~23:15 兄弟团:金孝(主持人).肖力.楼炜.张亮.孙杰.熊.世民 主题:5G 1. 5G超简单科普 金孝首先对大家做了超简单5G科普.5G 是第 ...

  6. 阿里云ssl负载均衡证书配置

    https://www.chinassl.net/ssl_install/n683.html

  7. SerialPort项目配置

    app的build.gradle下: apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultCon ...

  8. Google SketchUp Cookbook: (Chapter 1) Making Multiple Copies

    软件环境 SketchUp Pro 2018 参考书籍 Google SketchUp Cookbook http://shop.oreilly.com/product/9780596155100.d ...

  9. 易酷 cms2.5 本地文件包含漏洞 getshell

    易酷 cms2.5  本地文件包含漏洞 getshell 首先下载源码安装(http://127.0.0.1/test/ekucms2.5/install.php) 安装成功直接进行复现吧 本地包含一 ...

  10. 并发之痛 Thread,Goroutine,Actor

    转自:http://jolestar.com/parallel-programming-model-thread-goroutine-actor/ 先梳理下两个概念,几乎所有讲并发的文章都要先讲这两个 ...