oDesk Ruby or Rails Test Answers 2015
·
1. Which of the following will return
a User object when used with a model which deals with a table named User?
Answers:
• User.new
• User.destroy
• User.find
• User.save
2. In the case of Rails application
performance optimization, select all valid ways to do assets compilation:
Answers:
• Running the rake task with
the assets:precompile parameter when CSS and JavaScript files are updated.
• Set a true
value for the config.assets.compile parameter in the
config/environments/production.rb file.
• Implementing
the Rails asset pipeline feature to minify JavaScript & CSS assets.
• All of these.
3. What is the best way to get the
current request URL in Rails?
Answers:
• request.url
•
request.request_uri
•
request.fullpath
•
request.current_path
4. How can a value be stored so that
it's shared across an entire request (i.e. make it accessible in controllers,
views and models)?
Answers:
• Put it in a
global variable.
• Create a Singleton and
store it in a class variable.
• Store it in a
thread locally.
5. Which of the following commands
adds the data model info to the model file?
Answers:
• bundle install
• generate model
• annotate
• Rails server
6. Which of the following HTML
template languages are supported by Ruby?
Answers:
• Embedded Ruby
• HAML
• Mustache
• Razor
7. In a has_many association, what is
the difference between build and new?
// user.rb
has_many :posts
// post.rb
belongs_to :user
Answers:
• 'new' sets the
foreign key while 'build' does not.
• 'build' sets
the foreign key while 'new' does not.
• 'build' sets the foreign
key and adds it to the collection.
• 'new' sets the
foreign key and adds it to the collection.
8. What is the output of the following
code?
"test"*5
Answers:
• type casting
error
• test5
• 5
• testtesttesttesttest
9. When using full-page caching, what
happens when an incoming request matches a page in the cache?
Answers:
• The web-server serves the
file directly from disk, bypassing Rails.
• Rails checks to
see if there is a cached page on disk and passes it onto the server.
• Rails checks
its in-memory cache and passes the page onto the server.
10. What is the difference between
_url and _path while being used in routes?
Answers:
• _url is absolute while
_path is relative.
• _path is
relative while _path is absolute.
• _path is used
in controllers while _url is used in views.
• _path is used
in views while _url is used in controllers.
11. Which of the following code
samples will get the index of |page| inside of a loop?
Answers:
• <%
@images.each.do |page,index| %> <% end %>
• <%
@images.each_with_index do |page, index| %> <% end %>
• <% @images.collect.each.at_index
do |page, index| %> <% end %>
• None of these
12. Which of the following choices
will write routes for the API versioning scenario described below?
/api/users returns a 301 to
/api/v2/users
/api/v1/users returns a 200 of users
index at version 1
/api/v3/users returns a 301 to
/api/v2/users
/api/asdf/users returns a 301 to
/api/v2/users
Answers:
• namespace :api
do namespace :v1 do resources :users end namespace :v2 do resources :users end
match 'v:api/*path', :to => redirect("/api/v2/%{path}") match
'*path', :to => redirect("/api/v2/%{path}") end
• namespace :api
do resources :users end namespace :v2 do resources :users end match
'v:api/*path', :to => redirect("/api/v1/%{path}") match '*path',
:to => redirect("/api/v1/%{path}") end
• namespace :api
do scope :module => :v3, ¤t_api_routes namespace :v3,
¤t_api_routes namespace :v2, ¤t_api_routes namespace :v1,
¤t_api_routes match ":api/*path", :to =>
redirect("/api/v3/%{path}") end
• None of these
13. What is the output of the
following Ruby code?
puts "The multiplication output
of 10,10,2 is #{10*10*2}"
Answers:
• 200.
• The
multiplication output of 10,10,2 is #{10*10*2}.
• The multiplication output
of 10,10,2 is 200.
• The code will
give a syntax error.
14. What is difference between
"has_one" and "belong_to"?
Answers:
•
"has_one" should be used in a model whose table have foreign keys
while "belong_to" is used with an associated table.
• "belong_to"
should be used in a model whose table have foreign keys while
"has_one" is used with an associated table.
• The two are
interchangeable.
• None of these.
15. Which of the following is the
correct way to know the Rails root directory path?
Answers:
• RAILS_ROOT
• Rails.root
• Rails.root.show
• Rails.show.root
16. What is best way to create primary
key as a string field instead of integer in rails.
Answers:
• when creating a new table
don't add primary key using this create_table users, :id => false do |t|
t.string :id, :null => false ...... end execute("ALTER TABLE users ADD
PRIMARY KEY (id)") if not using id as primary key then in users model add
the following line class User < ActiveRecord::Base self.primary_key =
"column_name" .... end
• you can add a
key to column name to make it primary create_table users :id => false do |t|
t.string :column_name, :primary => true end
17. In a Rails application, a Gemfile
needs to be modified to make use of sqlite3-ruby gems. Which of the following
options will use these gems, as per the new Gemfile?
Answers:
• install bundle
Gemfile
• bundle install
• mate Gemfile
• gem bundle
install
18. What is the recommended Rails way
to iterate over records for display in a view?
Answers:
• Implicitly loop over a set
of records, and send the partial being rendered a :collection.
• Use each to
explicitly loop over a set of records.
• Use for to
fetch individual records explicitly in a loop.
19. where we use attr_accessor and
attr_accessible in rails ?
Answers:
• controller
• helper
• model
• view
20. Given the following code, where is
the "party!" method available?
module PartyAnimal
def self.party!
puts "Hard! Better! Faster! Stronger!"
end
end
class Person
include PartyAnimal
end
Answers:
• PartyAnimal.party!
• Person.party!
•
Person.new.party!
• Both PartyAnimal.party!
and Person.party!
• None of these
21. Which part of the MVC stack does
ERB or HAML typically participate in?
Answers:
• Class
• Controller
• Model
• Module
• View
22. Which of the following items are
stored in the models subdirectory?
Answers:
• helper classes
• database classes
• HTML layout
templates
• Config files
23. What is the output of the
following code in Ruby?
x= "A" + "B"
puts x
y= "C" <<
"D"
puts y
Answers:
• AB CD
• AB C
• AB D
• AB DC
24. Which gem is used to install a debugger
in Rails 3?
Answers:
• gem
'ruby-debug1'
• gem
"ruby-debug19"
• gem
"debugger19"
• gem
"ruby-debugger"
25. What exception cannot be handled
with the rescue_from method in the application controller?
e.g
class ApplicationControllers < ActionController::Base
rescue_from Exception, with:
error_handler
..........
end
Answers:
• Server errors
• Record not
found (404)
• Routing errors
• All of these
26. What component of Rails are tested
with unit tests?
Answers:
• Models
• Controllers
• View helpers
27. Which of the following replaced
the Prototype JavaScript library in Ruby on Rails as the default JavaScript
library?
Answers:
• jQuery
• Ajax
• Script.aculo.us
• ajax-li
28. If a method #decoupage(n) is
described as O(n^2), what does that mean?
Answers:
• The fewest
number of operations it will perform is n*n.
• The worst case run time is
proportional to the size of the square of the method's input.
• The method
operates by squaring the input.
• The return
value for the method will be the length of the input squared.
29. What is green-threading?
Answers:
• A design
pattern where a fixed-size pool of threads is shared around a program.
• When threads are emulated
by a virtual machine or interpreter.
• Where programs are
run across multiple CPUs.
30. Which of the following assertions
are used in testing views?
Answers:
• assert_valid
•
assert_select_email
• assert_select_encoded
• css_select
31. Is an AJAX call synchronous or
asynchronous?
Answers:
• Asynchronous
• Synchronous
• Either; it is configurable
32. Which of the following commands
will clear out sample users from the development database?
Answers:
• rake db:migrate
• rake db:reset
• rake
db:rollback
33. Given below are two statements
regarding the Ruby programming language:
Statement X: "redo" restarts
an iteration of the most internal loop, without checking loop condition.
Statement Y: "retry"
restarts the invocation of an iterator call. Also, arguments to the iterator
are re-evaluated.
Which of the following options is
correct?
Answers:
• Statement X is
correct, but statement Y is incorrect.
• Statement X is
incorrect, but statement Y is correct.
• Both statements are
correct.
• Both statements
are incorrect.
34. Choose the best way to implement
sessions in Rails 3:
A) Using CookieStore
B) By creating a session table and
setting config/initializers/session_store.rb with
Rails.application.config.session_store :active_record_store
C) By setting config/initializers/session_store.rb
with Rails.application.config.session_store :active_record_store only
Answers:
• A
• B
• C
• B and C
35. Which of the following is the
correct way to skip ActiveRecords in Rails 3?
Answers:
• ActiveRecords
cannot be skipped.
• Use option -O while
generating application template.
• Use option
-SKIP_AR while generating the application template.
• Add new line
SKIP: ACTIVERECORD in config.generators.
36. Which of the following is the
default way that Rails seeds data for tests?
Answers:
• Data Migrations
• Factories
• Fixture
Factories
• Fixtures
37. Which of the following options,
when passed as arguments, skips a particular validation?
Answers:
• :validate =>
skip
• :validate =>
off
• :validate =>
disable
• :validate => false
38. What declaration would you use to
set the layout for a controller?
Answers:
• layout 'new_layout'
• set_layout
'new_layout'
• @layout =
'new_layout'
39. What is the output of the
following code?
puts "aeiou".sub(/[aeiou]/,
'*')
Answers:
• *
• *****
• *eiou
• nil
40. Suppose a model is created as
follows:
rails generate
model Sales
rake db:migrate
What would be the best way to
completely undo these changes, assuming nothing else has changed in the
meantime?
Answers:
• rails reset models;
rake db:rollback
• rails destroy
model Sales; rake db:rollback
• rake
db:rollback; rails rollback model Sales
• rake db:rollback; rails
destroy model Sales
41. What is the difference between
:dependent => :destroy and :dependent => :delete_all in Rails?
Answers:
• There is no
difference between the two; :dependent => :destroy and :dependent =>
:delete_all are semantically equivalent.
• In :destroy, associated
objects are destroyed alongside the object by calling their :destroy method,
while in :delete_all, they are destroyed immediately, without calling their
:destroy method.
• In :delete_all,
associated objects are destroyed alongside the object by calling their :destroy
method, while in :destroy, they are destroyed immediately, without calling
their individual :destroy methods.
• None of these.
42. Which of the following methods is
used to check whether an object is valid or invalid?
Answers:
• .valid? and .invalid?
• valid() and
invalid()
• isvalid and
isinvalid
43. Which of the following is the
correct way to rollback a migration?
Answers:
• A migration
cannot be rollbacked.
• rake db:rollback STEP=N (N
is the migration number to be rollbacked)
• rake
db:migrate:reset: (N) (N is the migration number to be rollbacked)
• rake
db:rollback migration=N (N is the migration number to be rollbacked)
44. Which of the following is the
correct syntax for an input field of radio buttons in form_for?
Answers:
• <%= f.radio_button
:contactmethod, 'sms' %>
• <%=
f.radio_button_tag :contactmethod, 'sms' %>
• <%=
radio_button_tag :contactmethod, 'sms' %>
• <%=
f.radio_button "contactmethod", 'sms' %>
45. Which is the best way to add a
page-specific JavaScript code in a Rails 3 app?
<%= f.radio_button :rating,
'positive', :onclick => "$('some_div').show();" %>
Answers:
• <% content_for :head do
%> <script type="text/javascript"> <%= render :partial
=> "my_view_javascript" </script> <% end %> Then in
layout file <head> ... <%= yield :head %> </head>
• In the application_helper.rb
file: def include_javascript (file) s = " <script
type=\"text/javascript\">" + render(:file => file) +
"</script>" content_for(:head, raw(s)) end Then in your
particular view (app/views/books/index.html.erb in this example) <%
include_javascript 'books/index.js' %>
• In the
controller: def get_script render :file => 'app/assessts/javascripts/' +
params[:name] + '.js' end def get_page @script = '/' + params[:script_name] +
'.js?body=1' render page end In View <script
type="text/javascript",:src => @script>
• None of these
46. In order to enable locking on a
table, which of the following columns is added?
Answers:
• lock_version column
• identity column
• primary key
column
• lock_optimistic
column
47. If a float is added to an integer,
what is the class of the resulting number? i.e. 1.0 + 2
Answers:
• Integer
• Float
• BigDecimal
48. In a Rails Migration, which of the
following will make a column unique, and then have it indexed?
Answers:
• add_index :table_name,
:column_name, :unique => true
• add_index
:unique => true ,:table_name, :column_name
• add_index
:table_name, [:column_name_a, :unique => true ,:column_name_b], :unique
=> true
• None of these
49. Which of the following will
disable browser page caching in Rails?
Answers:
• expire_page(:controller
=> 'products', :action => 'index')
•
expire_fragment(:controller => 'products', :action => 'index')
•
expire_page_fragment('all_available_products')
•
expire_fragment('all_available_products')
50. Which of the following commands
will test a particular test case, given that the tests are contained in the
file test/unit/demo_test.rb, and the particular test case is test_one?
Answers:
• $ ruby -Itest
test/unit/demo_test.rb -n test_one
• $ ruby -Itest
test/unit/demo_test.rb -a test_one
• $ ruby -Itest
test/unit/demo_test.rb test_one
• $ ruby -Itest
test/unit/demo_test.rb -t test_one
51. Consider the following code
snippet:
def index
render
end
The corresponding index.html.erb view
is as following:
<html>
<head>
<title>Ruby on Rails sample
application | <%=@title%></title>
</head>
<body></body>
</html>
Which of the following options is
correct?
Answers:
• The application
will give an exception as @title variable is not defined in the controller.
• The HTML page
will render with the title: Ruby on Rails sample application |
<%=@title%>.
• The HTML page will render
with the title: Ruby on Rails sample application |.
• The HTML page
will render with the title: Ruby on Rails sample application.
52. Unit tests are used to test which
of the following components of Ruby on Rails?
Answers:
• Models
• Controllers
• Views
• Helper classes
53. If a controller is named
"Users", what would its helpers module be called?
Answers:
• UsersHelper
•
UserControllerHelper
• UserHelp
54. Which of the following serves as a
structural skeleton for all HTML pages created?
Answers:
• application.html.erb
•
default.html.erb
• index.html.erb
• layout.html.erb
55. Which of the following statements
is incorrect?
Answers:
• Rails does not support
ODBC connectivity.
• Rails can
rollback database changes in development mode.
• Rails can work
and connect with multiple databases.
• Rails database
information is stored in the database.yml file.
56. What is the Singleton design
pattern?
Answers:
• A class for which there is
only ever one instance.
• A single
feature application, intended to enhance usability by keeping things simple.
• A class which
is never instanced, but acts as a container for methods which are used by it's
subclasses.
57. Users who are new to MVC design
often ask how to query data from Views. Is this possible? And if so, is this a
good idea?
Answers:
• It is not
possible, because ActiveRecord queries cannot be made from Views.
• It is not possible,
because Controllers do not provide enough information to the Views.
• It is possible, but it is
a bad idea because Views should only be responsible for displaying objects
passed to them.
58. What does REST stand for?
Answers:
• Ruby Enclosed
Standard Templating
• Resource
Standard Transfer
• REasonable
Standards Testing
• REpresentational State
Transfer
• Rights Enabled
Safety Tunnel
59. With the two models Hive and Bee;
when creating a belongs_to association from the Bee model to Hive, what is the
foreign key generated on Bee?
Answers:
• hive_id
• hives_id
• ee_id
60. Which of the following is not true
about log levels in Ruby on Rails?
Answers:
• The available log levels
are: :debug, :info, :warn, :error, and :fatal, corresponding to the log level
numbers from 1 up to 5 respectively.
• To check the
current log level, the Rails.logger.level method has to be called.
• By default,
each log is created under Rails.root/log/ and the log file name is
environment_name.log.
• The default
Rails log level is error in production mode and debug in development and test
mode.
61. When a new controller named
"admin2" is created, the JS and the CSS files are created in:
Answers:
• controllers
• helpers
• assets
• views
62. Select all incorrect statements
regarding the Ruby Version Manager (RVM):
Answers:
• RVM is a
command-line tool which allows developers to easily install, manage, and work
with multiple Ruby environments from interpreters to sets of gems.
• RVM provides a revision
control tool to maintain current and historical versions of files such as
source code, web pages, and documentation.
• Test suites,
rake tasks, benchmarks and gem commands can be run against multiple Ruby
versions at the same time with RVM.
• RVM cannot
automate the installation and maintenance of gems, it has to be done manually.
63. Which of the following is not a
built-in Rails caching strategy used to reduce database calls?
Answers:
• Page Caching
• Fragment
Caching
• Object Caching
• Query Caching
64. In a Rails application, the
developmental and production configuration are stored in the:
Answers:
• config/environment folder
• public folder
• spec folder
• task folder
65. What is the convention for methods
which end with a question mark? e.g. #all?, #kind_of?, directory?
Answers:
• They should
always require arguments.
• They should always return
a boolean value.
• They should
always report a value of the object they're being called on.
66. Which of the following correctly
handles the currency field?
A) add_column :items, :price,
:decimal, :precision => 8, :scale => 2
B) add_money :items, :price, currency:
{ present: false }
Answers:
• A
• B
• Both A and B
are correct.
• Both A and B
are incorrect.
67. How can a partial called
"cart" be rendered from a controller called
"ProductsController", assuming the partial is in a directory called
"shared"?
Answers:
• render :partial =>
'shared/cart'
• partial
'shared/cart'
• render 'cart'
68. What does the 4xx series of HTTP
errors represent?
Answers:
• They are intended for
cases in which the server seems to have encountered an error.
• They are
intended for cases in which the client seems to have encountered an error.
• They indicate
that further action needs to be taken by the user agent in order to fulfill the
request.
• They indicate
that no further action can be taken by the user agent.
69. Which of the following validations
in Rails checks for null fields?
Answers:
• validates_presence_of
• validates_length_of
•
validates_confirmation_of
•
validates_uniqueness_of
70. Using ERB for views, what filename
should be given to a partial called 'login'?
Answers:
• partial_login.e
• _login.html.e
• login.html.e
71. What is output of following
statements?
1) "".nil? ==
"".empty? && "".blank? == "".empty?
2) !"".nil? ==
"".empty? && "".blank? == "".empty?
3) nil.nil? == nil.empty? &&
nil.blank? == nil.empty?
4) !"".blank? ==
"".present?
5) "".any? ==
!"".empty?
6) " ".blank? ==
" ".empty?
Answers:
• 1) false 2) true 3)
NoMethodError: undefined method `empty?' for nil:NilClass 4) true 5)
NoMethodError: undefined method `any?' for "":String 6) false
• 1) false 2)
NoMethodError: undefined method `empty?' for "":String 3) true 4)
true 5) NoMethodError: undefined method `any?' for "":String 6) false
• 1) false 2)
true 3) true 4) true 5) false 6) false
• 1) false 2)
true 3) false 4) true 5) true 6) false
72. For the String class, what's the
difference between "#slice" and "#slice!"?
Answers:
• None,
"#slice" is just an alias for "#slice!".
• There is no
"#slice!" method in Ruby on Rails.
• "#slice" returns
a new object, "#slice!" destructively updates — mutates — the
object's value.
73. Which of the following controller
actions (by default) are best suited to handle the GET HTTP request?
Answers:
• index
• show
• create
• edit
• update
74. Rails automatically requires
certain files in an application. Which of the following files are automatically
included without an explicit 'require' being necessary?
Answers:
• All files in
lib.
• All files in
models, views, controllers, and files named rails.rb in lib.
• All files in models,
views, controllers, and any init.rb in plugins.
• Only files
explicitly referenced from an initializer in config/initializers.
75. Which of the following is true
about writing tests for a Ruby on Rails application?
Answers:
• Rails
semi-automates the process of writing tests. It starts by producing skeleton
test code in the background while models and controllers are being written.
• Running tests
in Rails ensures that the code adheres to the desired functionality even after
major code refactoring.
• Rails tests can
simulate browser requests, and thus test the application's response without
having to test it through a browser.
• All of these.
76. What is the behavior of class
variables with subclasses?
Answers:
• Subclasses
inherit a default value for the class variable, which can then be modified for
just the subclass.
• Class variables are shared
between between all classes in the hierarchy.
• Class variables
are not inherited.
77. There is a table named Product in
a Rails application. The program is required to fetch any 5 rows where the
productid is 2. Which of the following is the correct option to perform this
action?
Answers:
•
Product.find(:productid=>2), :offset=>5
•
Product.find(:productid=>2), :limit=>5
•
Product.find(:productid=>2), :only=>5
78. Consider the following information
for a User view:
user_path named route with value
"/users/"
@user = 1
Now, consider the following code in
the HTML erb template:
<%= link_to user_path(@user),
"Angel" %>
What will be the HTML output of this
code?
Answers:
• a
href='/users/1'>Angel</a
• a
href='Angel'>/users/1</a
• a
href='/users/1'>/users/1</a
• a
href='Angel'>Angel</a
79. If a model called BlogComment is
defined, what would its DB table be called?
Answers:
• blog_comment
• blogcomments
• blog_comments
80. What is the output of the
following code?
$val = 20
print "Sample Text\n" if
$val
Answers:
• 20
• Sample Text
• No output
• Syntax error
81. Which of the following options
will disable the rendering of the view associated with a controller action?
Answers:
• render :layout=>false
• render
:layout=>nil
• render
:layout=>disabled
• render
:layout=>off
82. The =~ operator is used to do
inline Regular Expression matching, for instance:
"function" =~ /fun/
"function" =~ /dinosaurs/
What are possible return values for
the =~ matcher?
Answers:
• true, false
•
"fun", nil
• 1 and 0 only
• 0 and nil only
• nil, 0, and any positive
integer
83. Which of the following options is
used to create a form HTML in the erb files?
Answers:
• form_for
• create_form
• form_do
• form
84. Which of the following actions is
fired by default when a new controller is created?
Answers:
• index
• run
• show
• login