---
# System prepended metadata

title: BoniO面試題(參考)
tags: [面試]

---

---
title: BoniO面試題(參考)
tags: 面試
---
BoniO
===
# ROR interview quiz

:::info
- 嘗試回答下述問題(不限制作答格式，可使用中英文或畫圖說明)
- 作答時間二個小時，不會的題目可以跳過不作答，歡迎 Google 尋找答案並搞懂後再回答，請適當分配作答時間。
:::

### Part I - Software Engineering
####  What is Cookie? Briefly describe how it works in practice.

```
write here
```

<br><br><br>
#### What is Session? Briefly describe how it works in practice.

```
write here
```

<br><br><br>
#### When you click a link that directs to `https://www.facebook.com/`, what would happen between the browser and the server? Please describe as much detail as you know.

```
write here
```

<br><br><br>
---

## Part II - Ruby and RoR:
#### What's the difference between `public`, `private`, and `protected` in Ruby?

```
write here
```

<br><br><br>
#### What is the difference between `Array#map` and `Array#each`?

```
write here
```

<br><br><br>
#### What is the differnece between `extend` and `include` in ruby?

```
write here
```

<br><br><br>
#### Explain what is `yield` in Ruby?

```
write here
```


<br><br><br>
#### What is difference between `render` and `redirect_to`?


```
write here
```


<br><br><br>
#### Please read the following table and answer the questions:
![schools_table](https://i.imgur.com/Tu62Mg2.png)

##### Use Rails ORM to list all schools that code is null.

```
write here
```

<br><br><br>
##### Use Rails ORM to list all schools that has duplicate code.

```
write here
```

<br><br><br>
##### Finish the model code below:

```ruby=
class School < ApplicationRecord
  # ===============================================
  #  教育部學校代碼 - 學校級別對照表
  #  (根據學校代碼左邊算來第四碼判斷)
  # ===============================================
  # 5 國民中學
  # 6┐
  # 7┤國民小學
  # 8┘
  # ===============================================
  # 透過學校代碼計算學校級別
  def self.stage(code:)
    write here
    write here
  end
end
  
School.stage(code: '011601') # => '國民小學'
School.stage(code: '054702') # => '國民小學'
School.stage(code: '044518') # => '國民中學'
```

<br><br>
#### Please read the following code examples and answer the questions:
```ruby=
class User < ApplicationRecord
  def admin?
    admin?(id)
  end
    
  def self.admin?(id)
    User.find_by(id: id)&.has_role?(:admin)
  end
end
    
User.admin?(User.last.id) # => true
User.last.admin? # => ?
```

##### What is the result of line 12?

```
write here
```

<br><br><br>
##### If line 12 raise errors, how would you fix it?

```
write here
```


<br><br><br>
#### Please read the following codes and answer the questions:
```ruby=
# db/schema.rb
create_table :comments do |t|
  t.integer :post_id
  t.integer :author_id
  t.string :content
end
```

```ruby=
# app/controllers/comments_controller.rb
class CommentsController < ApplicationController
  def users_comments
    comments = Post.all.map(&:comments).flatten
    @user_comments = comments.select do |comment|
      comment.author.username == params[:username]
    end
  end
end
```
    
##### What’s the issue with the controller code? 

```
write here
```



<br><br><br>
##### How would you fix it by using `includes` method?

```
write here
```

<br><br><br>
##### How would you fix it without the use of `includes`?

```
write here
```


<br><br><br>
#### Please finish code below and answer the questions:
```ruby=
# db/schema.rb
create_table :books do |t|
  t.string :name
  t.string :author
end

create_table :bookstore do |t|
  t.string :name
end

create_table :book_bookstores do |t|
  t.integer :inventory_quantity
  write here
end
```

```ruby=
# app/models/book.rb
class Book < ApplicationRecord
  write here
end

# app/models/bookstore.rb
class Bookstore < ApplicationRecord
  write here
end

# app/models/book_bookstore.rb
class BookBookstore < ApplicationRecord
  write here
end
```
<br>

##### Now have the following information

```ruby=
books = [
  {
    name: "Harry Potter and the Philosopher's Stone",
    author: 'J. K. Rowling',
  }
]

bookstore = [
  {
    name: 'Diagon Alley'
  },
  {
    name: 'Butterbeer'
  }
]
```
##### Harry Potter and the Philosopher's Stone need 3 inventory_quantity in Diagon Alley 

```
write here
```

##### Harry Potter and the Philosopher's Stone need 4 inventory_quantity in Butterbeer 

```
write here
```

##### How many copies of Harry Potter and the Philosopher's Stone are currently in all bookstores?

```
write here
```
    
<br><br><br>
---

## Part III - SQL:
#### How do you detect `slow queries`?

```
write here
```

<br><br><br>
#### What is an `index` and why would you use it?

```
write here
```

<br><br><br>
#### What is `SQL injection`?

```
write here
```

<br><br><br>
---
## Part IV - Other Knowledges

#### What’s `redis`? How would you use it in a web application?

```
write here
```



<br><br><br>
#### What's `load balance`? why would you use it?


```
write here
```




<br><br><br>
#### How do you benchmark your website performance? and how to ensure website can handle 10000 active users?


```
write here
```




