2018/03/12 面試題目
這次的面試很開心,回答得算順利,面試者也認為有專業。
雖然我不清楚面試者如何對他不熟悉的領域,聽出有沒有理解就是了。
你的工作經驗?
維護該公司的系統、導入一些小套件、寫新的頁面。 那個公司的系統很舊,所以我都是用 jQuery 與後端 helper 完成事情。
Vue 做什麼的?
在 jQuery 的時代,資料呈現是以 DOM element 為單位:這種情況下,如果要更換資料,就會以 DOM element 操作為主。 例如我想要輸入 input 時把資料呈現的話,在 jQuery 就會這樣寫:
<div id="app">
<input class="foo"><br />
<span class="bar"></span><br />
<span class="baz"></span>
</div>
<script>
$(".foo").keypress(function()
{
var the_text = $(".foo").val();
$(".bar").text(the_text);
$(".baz").text( "輸入了" + the_text);
});
</script>
但萬一我要改動 DOM element 的話,就會是惡夢一場。
在雙向綁定的 Vue 就不同了,你可以這樣寫:
<div id="app">
<input clas="foo" v-model="foo_m"><br />
<span class="bar"> {{ foo_m }} </span><br />
<span class="baz"> {{ "輸入了" + foo_m }} </span>
</div>
<script>
var app = new Vue({
data:{ foo_m : "" },
method:{ }
})
</script>
整個程式碼就會整潔許多。
如果要驗證資料,例如身份證號碼,要怎麼做?
- HTML 有
pattern
或是type
屬性可以做最簡單的驗證。 - 當然我可以繞過 HTML 驗證,所以還需要 JavaScript 驗證。
- 然而用戶端還是有辦法[繞過 JavaScript 驗證](https://www.google.com.tw/search?q=繞過 JavaScript 驗證)。因此,不管前端做得再全,後端還是要驗證。
- 身份證號碼就第一位是字母、第二位是 1 或 2、最後是檢查碼。併此指名。
如果我給一個 JSON API,你如何把它變成網頁表格的資料?
假設在 Vue 的話:
<table>
<thead>
<tr>
<td>ID</td>
<td>Name</td>
<td>Account</td>
</tr>
</thead>
<tbody>
<tr v-for="(value, key, index) in i_ajax" :key="i.id">
<td> {{ index }} </td>
<td> {{ value.name }} </td>
<td> {{ value.account }} </td>
</tr>
</tbody>
</table>
一個表單,從送出去到回應,中間發生什麼事?
- 首先會執行前端驗證。
- 接著瀏覽器會發出一段 Request。
- 這個 Request 會跑到伺服器執行。
- 伺服器執行完畢一定會給個 Reponse。
- 瀏覽器再針對 Reponse 做對應動作。
你對後端 PHP 的理解?
我寫過幾次原生 PHP,用原生的 echo 手刻,但發現這樣寫會很恐怖。我之後接觸過 Laravel 還有 Ruby on Rails。知道如何用後端 helper 或是 RESTful 或是 API 之類的東西產生網頁、也理解什麼是 MVC。
什麼是 RESTful?
假設我有 foo.bar/3
這個網址,它其實就是個資源(Resource)。這個名詞,對應的就是 foo.bar
的第 3
個資源。再透過 HTTP 的 GET
POST
PATCH
DELETE
完成對應的 CRUD。
什麼是 MVC?
我目前的應徵的前端網頁,在整個框架就是對應到 MVC 的 View、接著 M 就是 Model,它掌管算法或是與資料庫的交互、最後 C 的 Controller 負責把這兩者結合在一起。
你平常如何找資料?用英文論壇嗎?
我會找官方手冊,接著找 Stack Overflow。完全沒有,就會去中文即時通訊軟體如 Line Telegram 之類的,因為它們能很快得到需要的回應。
你使用什麼版控?
「Git,你們該不會用 SVN?」
「我的確是 SVN,不過我可以用 Git」
針對 RWD 你會用手刻?還是框架?
針對 RWD 我會以框架優先:因為框架速度快、大家都懂、也好維護。真的沒有辦法(例如查遍手冊都沒有正確用法)時,才會考慮手刻。