2017年8月31日星期四

福岡LINE IT工作筆試經驗



前言
相信很多人跟我一樣,對香港的前途感到灰暗,近年在Facebook的時事新聞Post中看過很多次的一句留言就是「有能力就離開香港啦」。
我認為這句說話,雖然所謂「能力」,大多數指就是金錢,你有幾百萬現金,大可以搞投資移民,沒有錢的話,就只好另覓出路。
其中一條出路就是出國工作,雖然跟移民是兩碼子的事,但至少還是離開了香港這個只適合工作,但不適合生活的地方。

其實早在一年多前已經開始物色有什麼工作機會,其實Linkedin上,蠻多大公司都多招聘廣告的。
最早有興趣的是「Agoda」,因為當時在JobsDB都有Ad,它在Linkedin上長期都有招聘廣告,所需工作要求其實跟自己稱得上符合,都是Microsoft .NET技術加一些新興技術,而且公司位置就是在曼谷的Central World大樓。
但跟現職員工打聽過後,知道它們只會請有Native英文程度的人....
我自己讀寫當然絕對沒問題啦,但不得不承認聽力跟會話,跟一個美國人/印度人相比,還差很遠,相信在第一回Skype Interview也過不了,所以無謂自討苦吃。

日本永住資格
早段時間見到「日本政府將縮短高度人才申請永住的條件」,網上看到不少人趨之若鶩。
雖然「永住」不代表你是「日本國民」,但「永住權」對你在日生活,出入境,工作生活都很重要。

詳細可以看一看日本法務省入国管理局網站:
高度人材ポイント制による出入国管理上の優遇制度

IT業類別是「高度専門・技術活動「高度専門職1号(ロ)」,以計分制作資格評估。
簡單來說,如果你有大學以上學歷,十年以上工作經驗,年收700萬Yen以上就差不多達到合格分數,當然還要在日本有工作。
如果你有JLPT N1或N2水平或認可的國際專業資格都有分數加。
不過這方面會花篇幅太多,有興趣大家可以自行研究一下。

能夠在日本工作,肯是一生人之中的寶貴經歷之外,還可以學好日語,再加上上述「永住」的巨大誘惑,足以成就第二人生。
而最近港台兩地IT行情之間,開始多人談論LINE的工作。
因為LINE早幾個月在台灣廣泛地招請人才,在香港JobsDB都有廣告,這份工作最吸引人的地方是:
1. 福岡的博多Office上班
2. 不需要懂日語,受聘請後,公司還會出錢給你在上辦公時間學日語
3. 薪水福利比香港還要高
還有等等很多很多誘因,當然如果你跟我一樣是崇日的話,根本能在日本工作這一個原因就已經足夠令你舉家移至日本。
在發應徵信之前,我做了萬全準備,上網盡可能了解LINE的產品,公司文化,所用的技術,CI/CD流程,更接觸過幾個現職的台灣員工了解一下,他們都給了我鼓勵。

福岡LINE的招聘廣告雖然有Python/Ruby要求,但我知道該公司在網路開發方法都是以JavaEE/Spring為主。
由種種LINE的文件顯示,亦支持我的說法,所以想去日本LINE工作的人就要主攻Spring了。
由LINE公司員工的Linkedin所提示,會用上Jenkins,Node.js,NoSQL,AWS RedShift,和Redis的in-memory data store。

面試
LINE的面試流程簡單:
1.寄CV -> 2.Screening -> 3.Pre-Test -> 4.真人面試

我申請的職位是「Development Engineer」,發CV出去後,一星期左右就收到電郵連測試附件的回覆。


測試有兩部份,第一部份是解答,第二部份是個人能力的問卷,例如(你最擅長的語言,你過去遇到最難的事等等)
基於保密理由,我不能公開試題,大家亦不需要留言問我。
我只能夠說重度Algorithm,外國Computer science課題上是很常見的題目,例如Recursive function, Time & Space Complexity, Big-O, Permutation and Combination,若你是剛畢業的CS學生,又有修過相關課題就應該沒問題,
不過好像我已經工作快20年的人來說,技能已經太過Practical反而應付不了。

當然我也有Google,但不可能Copy答案或以其他語言重寫交貨。
最後我理解其義,以C#作答,並自己想的方法去解題。

但沒想到,我在這個階段已經落選了....


其實這件事已經發生在一個月之前,對我自己的確有一定程度的打擊,我的日本夢也碎了。
因為我自己由90年代開始,聽的是日本歌,看到是日劇,玩的是日本Game,能夠去日本工作生活的確是我的夢想。
雖然結果很失望,但都想仔細寫出來,讓其他人參考一下,希望幫到有共同夢想的人。
希望大家就職成功!

參考資料
有一些網站對你理解LINE的工作情況和環境都很有用,同時了解一下為什麼福岡是外國人踏足日本工作的好地方。
WORKLIFE IN JAPAN 日本 職場 生活 趨勢
福岡:守業大國的 Start-up 之城
福岡市打造亞洲新創基地
43歲市長「跑業務」,福岡三年變日本新創之都!

Line Fukuoka / Facebook / Blog
LINE官方HR/工作環境相關:
LINE員工性別/年齡/國籍分佈
LINE Fukuoka のオフィス (Office) を紹介します
LINE Corporation slideshare - engineer culture
Line Engineering Blog

其他日本網站:
LINE Fukuokaの採用/求人/転職情報
Vorkers (日本版的Glass Door) - 事實上整體評分(3.32/5)並不高,<業界内の順位を見る>也不在高位。
カイシャの評判 - LINE Fukuoka株式会社の口コミ・評判

台灣員工的Blog:
kojilin’s diary
Freddie's BlogFreddie Wang在Line撰文 - 為什麼我們使用Kotlin開發LINE Creators Studio

2017年7月21日星期五

ASP.NET Core 正確發佈至CentOS/Apache & 解決Service Unavailable Error 503

若跟著Microsoft的教學文件,建立ASP.NET Core Project後,上傳至Apache後,應該都會跑得動。
但當你做了若干修改後,即使在本機以IISExpress運作得完美無瑕,
再次發佈可能都得以出現Http Error 503 - Service Unavailable
用GEdit打開Error log,Error message如下:

Long Term Support (LTS) releases are -

[Thu Jul 20 17:54:50.534863 2017] [proxy:error] [pid 1283] (111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:5000 (127.0.0.1) failed
[Thu Jul 20 17:54:50.535276 2017] [proxy:error] [pid 1283] AH00959: ap_proxy_connect_backend disabling worker for (127.0.0.1) for 60s
[Thu Jul 20 17:54:50.535289 2017] [proxy_http:error] [pid 1283] [client 10.3.15.246:61490] AH01114: HTTP: failed to make connection to backend: 127.0.0.1



很自然就會Copy了上述幾句Google Search,得出的結果都是大概是(未打開SELinux, Firewall/iptables設置問題等等..)

如果依照這個方向去想,搞幾天都不會有什麼改變。
因為原因根本不是Apache的問題。

ASP.NET Core的Dependency Hell & Version Hell

由我早前所寫的問題集當中,可見.NET Core自身的版本跟其他Package的兼容性有極大關係,暫時Microsoft似乎未解決Dependency Hell問題,即使外國,已經有多位開發人員抱怨,認為.NET Core暫時不適合Production用,問題大多數跟我一樣出於開發過程上有太多難以解決的問題。

我們先了解一下.NET Core Runtime/SDK目前為止的版本。
在Github上的Release Notes可以看到有多個版本,而.NET Core Runtime and SDK download archive再分開LTS版和Current Release版,當中Runtime配搭著不同SDK版本下載。
官方解釋LTS和Current Release的分別是:

Long Term Support (LTS) releases are -
- Supported for three years after the general availability date of a LTS release
- Or one year after the general availability of a subsequent LTS release
Current releases are -
- Supported within the same three-year window as the parent LTS release
- Supported for three months after the general availability of a subsequent Current release
- And one year after the general availability of a subsequent LTS release

在Nuget上,亦不見得好。.NET Core Package頁上,舊版本的更新時間可能比新版本還要新,實在有點混亂。

ASP.NET Core / CentOS / Apache 問題集

前天以為安裝好DotNET Core至CentOS,看到ASP.NET頁面,應該就可以專心進入開發程序。
但這兩天預到的問題實在太多,由Visual Studio本身對.NET Core的兼容性,.NET Core本身的問題,到Project設定,再到Apache等等問題,我都花了不少時間解決。
始終.NET Core還是很新的產品,Google後都很難找到實際解決方法,所以我把預到的問題和解決方法寫下來,希望幫到其他人。

開發環境可以參照我前天所寫的ASP.NET Core + CentOS 7 + Apache安裝攻略
Error 1 - The project has not been restored or restore failed - run `dotnet restore`
一次就出現4個Error Message:

Severity Code Description Project File Line Suppression State
Error 3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries. SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error 2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section. SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error 1. The project has not been restored or restore failed - run `dotnet restore` SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes: SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262

這個錯誤大多數出現在當你以Core 1.0.0開新Project後,做第一次Nuget Package更新到v1.0.1後,就會出現。
幸好這個問題已經在Github上有人報告issue #2442
解決方法是打開project.json,加上:
"runtimes": {
    "win10-x64": {},
    "win8-x64": {} 
},
之後找出"Microsoft.NETCore.App",修改為
"Microsoft.NETCore.App": {
    "version": "1.0.1",
    "type": "platform"
}
或者你會發現,在dependencies裡同樣都有"Microsoft.NETCore.App": "1.0.1",我自己就把這個刪除,但大家視乎情況而定。