Month: April 2017

  • 開發人員的面試指南 – A developer’s guide to interviewing

    開發人員的面試指南 – A developer’s guide to interviewing

    另一個標題:如何面試一家公司。 原作者:Dave Smith,Twitter: @djsmith42 原文:A developer’s guide to interviewing Louie Lu 經作者同意翻譯為正體中文。 譯註:本文描述為美國之情況,不一定能直接套用於台灣環境。 你有沒有過,當你在面試的時候,面試官坐在桌子對面,雙眼注視著問你:「你還有其他問題嗎?」,而你回眼回去並說:「umm, 大概沒有了」。如果這曾經發生在你身上,你有很大的機率得到了一個單一面向的面試經驗。 作為一個應試者,可以想見你把目標放在一件事情上:取得工作職缺。但是別忘記,面試並不是一個單向的工作。如同面試官在面試你,你也必須要面試公司。 不過,你需要問他們什麼呢? 許多在尋找工作的開發者都問過我這個問題。在過去的 15 年內,我曾在 7 間公司工作 (包含兩個實習以及一個六個月的新創公司),並且面試過無數次。我最後決定寫下我在這些面試中問的問題,好幫助其他面試者,並且期望對他們會有所幫助。 我的目標是將這些資訊記錄下來。如果你有任何的建議,請透過 Twitter 讓我知道,我會將資訊列入,讓大家都能受惠。 你跟誰談話? 當你在面試的時候,通常會遇到下面三種不同的人。根據公司的規模,這有可能是一個人或多位人選: 軟體工程師 大頭 / 管理階層 (technical lead, middle manager, director) 公司領導階層 (VP, CTO, CEO, department manager) 下面的列表中,針對不同的人,我有不同的問題詢問他們。注意到,有些問題我會在不同人之間重複詢問,然後比較他們之間是如何回答。 這是一篇很長的文章。 比較像是一份 reference,而不是一篇拿來閱讀的文章。如果我今天正在面試,我會將這份指南帶在身上,然後 (謹慎的) 在面試中使用裡面的提問。 大部分的問題沒有所謂「對」或是「錯」的答案。它們被設計來讓你更了解整個公司的文化、流程以及組織架構。它們也能拿來當作一個對話的開頭,這在你的大腦因為面試而呆滯的時候會有些幫助。 基於禮貌,我通常會在面試開始時跟面試官說,希望留下時間來問問題。這能幫助面試官規劃如何面試。通常他們會把提問的時間放在面試的結尾,要對面試官的流程有認知,並且讓他們在早期就知道你的意向。每個問題結束後,詢問他們是否可以繼續詢問問題,以及還有多少面試時間。 針對軟體工程師的問題: 你如何知道你每天要做什麼? 這個問題的目的是要了解有無工作流程上的障礙 (dysfunction)。我會希望從…

  • The Fact: 國際標準化組織 ISO 的英文全稱

    The Fact: 國際標準化組織簡稱為「ISO」,但是全稱是「International Organization for Standardization」 Why: 參見 ISO About us: it’s all in the name: It’s all in the name Because ‘International Organization for Standardization’ would have different acronyms in different languages (IOS in English, OIN in French for Organisation internationale de normalisation), our founders decided to give it the short form ISO. ISO is…

  • Python Libs – Why “profile” can’t be context manager?

    Python Libs – Why “profile” can’t be context manager?

    Why Python standard library “profile” can’t be context manager like this import profile with profile.Profile(): fib(10)   Zero, what is “profile” module in Python? According to Python 3 Documentation: profile, a pure Python module whose interface is imitated by cProfile, but which adds significant overhead to profiled programs. If you’re trying to extend the profiler…

  • 閱讀英文

    閱讀英文

    從我有記憶以來,第一次英文閱讀有顯著增強的原因,是因為高一的時候要閱讀 documentation 跟外國論壇。那時候找資料下意識都會尋找中文資料而避開英文資源。有天想想,這樣不是辦法,很多資源都是英文的,就這樣強迫自己找資料要找英文的,搭配 Google translate 在旁邊一段一段翻譯。我記得很清楚,過一個禮拜之後,我就可以很順暢而不會排斥去找英文資料了。 第二次是因為玩遊戲。在電腦上玩了一系列共兩款的 PS2 英文 RPG 遊戲 (ArTonelico)。完成後閱讀能力再次增長。至少,閱讀 documentation 已經不是問題。 第三次,也就是現在,應該是在一口氣閱讀3年份的 python-committers mailing list 之後。對於大量閱讀人話開始熟悉。也能夠比較沒有負擔的看一整串的 mailing list 了。

  • 台灣公私立大專院校宿舍門禁/宵禁地圖與統計

    台灣公私立大專院校宿舍門禁/宵禁地圖與統計

    總表整理了全台灣公私立大專院校對於宿舍門禁 / 宵禁的狀況。包含宵禁時間,是否有女宿特別條款,以及資料來源 (宿舍網站,學校學務處法規等)。 宿舍門禁/宵禁統計總表網址:https://goo.gl/TIVgNc 地圖則整理成地圖方式,方便觀察是否有南北不平均,不同調的情況。從地圖可以發現中南部的宵禁學校遠多於北部。可能因為他們比較落後吧。 宿舍宵禁地圖:https://goo.gl/09wJ5T

  • Python 底層運作 02 – PyTokenizer_Get 分析

    當 Python 在讀入程式碼的時候, 第一步就是對程式碼 lexing,將程式碼拆解成 token,標記出每個元素的分類為何。 以下面的程式碼為例: bar = 12345 我們透過 tokenize module 來分析,會變成: $ ./python -m tokenize tests.py 0,0-0,0: ENCODING ‘utf-8’ 1,0-1,3: NAME ‘foo’ 1,4-1,5: OP ‘=’ 1,6-1,11: NUMBER ‘12345’ 1,11-1,12: NEWLINE ‘\n’ 2,0-2,1: NL ‘\n’ 3,0-3,1: NL ‘\n’ 4,0-4,0: ENDMARKER ” 我們可以看到 foo 被標記為 NAME,= 標記為 OP (operator),12345 則被標記為 NUMBER。 在 CPython 中,負責將程式碼標記成 token 的程式碼是 PyTokenizer_Get ,位於 Parser/tokenizer.c。PyTokenizer_Get…

  • Python 底層運作 01 – 虛擬機器與 Byte Code

    Python 底層運作 01 – 虛擬機器與 Byte Code

    你可曾想過這段 Python 程式碼是如何運作的? >>> a = 5 >>> b = 10 >>> c = a * b >>> c 50 Python 作為 interpreted language,其運作可以分為兩個大項,Compiler 以及 Virtual Machine。Compiler 負責將輸入的語法做分析,轉換成 AST (Abstract Syntax Tree),再轉換成 CFG,最後依照 CFG 輸出 bytecode,Code Object 等必要的物件。Virtual Machine 則根據 bytecode 來運行,最後輸出程式運行的結果。 我們可以透過 Python 的 dis 模組,來得知程式碼的 Byte Code 是什麼: ➜ cpython git:(master) ✗ cat tests.py a…