当前位置: 首页 >> 面试题 >> 技术 >> 后端开发 >> Ruby >>

2014年8月份百度电话面试经历Ruby开发

学过C++吗?

讲讲Ruby优缺点?

  • 介绍一下ruby

Ruby是一种功能强大的面向对象的脚本语言,可以使用它方便快捷地进行面向对象程序设计。与Perl类似,而且Ruby具有强大的文本处理功能,使文本处理变得简单。此外还可以方便地使用C语言来扩展Ruby的功能。 若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用,但它的语法真让人受不了”,又或者觉得“LISP系列语言的思想不错,但到处都是括号真让人讨厌,最起码算式应该按照通常的样式书写”。那么,Ruby或许能让您满意。

归纳起来,Ruby有以下优点:

l解释型执行,方便快捷

Ruby是解释型语言,其程序无需编译即可执行。

l语法简单、优雅

语法比较简单,类似Algol系语法。

l完全面向对象

Ruby从一开始就被设计成纯粹的面向对象语言,因此所有东西都是对象,例如整数等基本数据类型。

l内置正则式引擎,适合文本处理

Ruby支持功能强大的字符串操作和正则表达式检索功能,可以方便的对字符串进行处理。

l自动垃圾收集

具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。不需要用户对内存进行管理。

l跨平台和高度可移植性

Ruby支持多种平台,在Windows, Unix, Linux,

MacOS上都可以运行。Ruby程序的可移植性非常好,绝大多数程序可以不加修改的在各种平台上加以运行。

l有优雅、完善的异常处理机制

Ruby提供了一整套异常处理机制,可以方便优雅地处理代码处理出错的情况。

l拥有很多高级特性

Ruby拥有很多高级特性,例如操作符重载、Mix-ins、特殊方法等等,是用这些特性可以方便地完成各种强大的功能。

同时,由于是解释型语言,Ruby也有下列缺点:

l解释型语言,所以速度较慢

l静态检查比较少

  • 说说他的线程机制?

讲讲Ruby的单例类,和单例方法

讲讲Ruby的垃圾回收机制

hadloop,Mapreduce 相关的: 如果我有一个很大的日志文件,但是有很小的内存,我如何设计程序去分析这些文件?(切片)

用shell,Linux吗?: 如果我要杀掉系统中10个PHP进程,你的shell是什么?(top命令很不好)

你有哪些方式去解决Mysql的性能问题?

  • 有哪些方式?
  • 切片后如果我有256张表,现在要扩展一张,我如何做?

对比一下Mongodb和Mysql, 他们分别的使用场景是什么?

Mysql和Mongodb的索引实现机制是什么?

数据结构篇

什么是平衡二叉树?

二叉树的遍历方式?

二叉树的深度和广度?

如何判断链表是否带环?

1、如何判断是否存在环? 2、如何知道环的长度? 3、如何找出环的连接点在哪里? 4、带环链表的长度是多少?

解法: 1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。 2、对于问题2,记录下问题1的碰撞点p,slow、fast从该点开始,再次碰撞所走过的操作数就是环的长度s。 3、问题3:有定理:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。(证明在后面附注) 4、问题3中已经求出连接点距离头指针的长度,加上问题2中求出的环的长度,二者之和就是带环单链表的长度 http://blog.sina.com.cn/s/blog_725dd1010100tqwp.html

设计模式

你都用过哪些设计模式?

讲讲单例模式,并说说,他有哪些缺憾?

编程题

写一段程序,验证括号是否按照正确的方式在匹配? 用到的数据结构叫什么名字?

测试题

如果喊你测试一支笔,你会从哪些方面去测试?

在功能测试中,如果对某一功能,如:有墨水能画出来,做测试,你会从哪些方面去考虑,他的边界测试又是哪些?

 

Loading