直播訪問精華筆記
上週末我舉辦了一場直播演講,訪問了新創公司 Cooby 酷比 的兩位創辦人:前 Instagram Tech Lead Jocelin 及前臉書 PM Wen。 研究他們的創業思考、歷程與經驗。Cooby 是針對需要長期維護客戶關係的業務所做的 CRM 管理工具,目前正在緊鑼密鼓邀請需要和客戶溝通的專業人員試用階段!以下是直播的大綱筆記,讓我們來看看他們是如何決定放棄高薪工作,一切以 0 開始回台創業的第一手經歷:
1. 創業發想的開端
在大學就有創業想法的 Wen 在評估過創業所需條件後,選擇離開 Dropbox 進入 Facebook 尋找更多的人脈、資金以及學習管道。
Jocelin 則在就學期間多方碰觸到創業相關的知識,在 Instagram 及 Facebook 的工作經驗中也不斷嘗試增加這方面的經驗職能。也因為這樣,本是大學學長學妹的他們決定一起創辦 Cooby,成為了這間公司的共同創辦人。
2. 從 0 開始的創業
在決定和 Wen一起創辦 Cooby 前,Jocelin 也曾想過先到別間新創公司嘗試看看。但在一位創業前輩的建議下發覺,沒有任何職位能比創業者更能體會這一段路程的艱辛與價值。
Wen 也說到,成為創辦人後發現自己更能親身去參與公司的每一個過程,體會承擔公司的義務與享受其中的樂趣。
3. 創業的時機點:Now or Never
創業畢竟是極具有高風險的,是什麼讓他們能毅然決然放棄在矽谷的高薪工作呢?
Wen 以未來規劃做答案給了一個數據調查,不執著於下一步行動所帶來的價值,而是要為長遠的規劃去評估其收益。
Jocelin 補充說到,創業這個決定所要評估的風險成本是非常多的,若不趁著現在尚未成家立業前去冒險一次,隨著時間的推移成本越來越高,將會更難下這個決定。
4. 創業的地點
因為 2020 年 COVID 19的爆發,台灣疫情相對穩定。
Wen提供了一個方程式來教我們評估選擇創業地點的一個辦法!簡單來說,以自己的初始資本為底,去加乘市場的成長速度、你相較於該市場的價值以及抓控市場的能力,即能得出你最後成就的產出。
較為感性的選擇面上,家庭也是他們考量的最大主因。
5. 創立公司的資金、團隊哪裡來?
當詢問到他們創業的資金來源時,Wen 也公開他找尋投資的過程。除卻人脈影響力外,投資人更看重團隊能力、執行力以及產品潛在市場等等更實質的因素。而相較於亞洲,美國矽谷對於創業投資的容忍度來得更為廣。Jocelin 表示可能亞洲缺乏好的楷模樣本,對於要投資這樣初始的公司較為瞻前顧後,也因此 Cooby 的投資大多為國外投資人為主。
在團隊的延攬方面,大多數的創始員工都是他們在矽谷工作時認識的!以一個個 project 做起,逐步建立信任與動機的吸引成功打造出團隊。Wen 強調Work reputation很重要,這幫助他們找尋人才方便了許多!
6. 創業產品的發想過程
尋找趨勢在哪,結合資訊不對等產生的Gap去找到適合發展的產品。
Cooby 所做的產品是一套CRM產品,針對不同行業的人員,面對客戶訊息做整合以及分配事項讓工作效率提高,去做更能發揮產值的事情。Wen 分享到,現在的趨勢是通訊軟體正在取代 email 的進程,而他們看重的就是將這些通訊軟體統一整合到 Cooby 去方便大家管理!
同時,我也詢問他们目前開發產品遇到的最大困難點是什麼?Jocelin 說明因為 Cooby 的產品必須仰賴通訊軟體的 API,因此在一些功能實現上有時相對較為受限。而在市場發展方面,Wen 表示對於客戶的付費意願是較為具有挑戰性的地方。
7. 市場接受度以及產品的TA策略
現階段 Cooby 以需要維護客戶關係的業務為主要 Target,期待個人業務對於 Cooby使用滿意度能擴大到影響公司整體去購買。Wen 對於這樣的 self-serve 的go-to-market 策略抱持樂觀與正向的想法,希望藉由這個方式去擴大市場的接受度。
8. 公司的下一步計畫
除了公司的擴大徵才計畫外;這週產品會上線,再藉由這段過程去找到真正適合這個產品的使用者進而擴大用戶群。
9. Q&A 時間補充資料:
- Wen 提到他們使用的線上付費做 user research方式, 是使用 Upwork , 但不是雇用他們做事, 而是去訪問他們。
- 請問有沒有推薦的PM書單或像Medium 之類的線上資源?可以參考 Wen 的 Medium, 他有一系列產品經理的精彩文章,還有他的個人思考: http://bit.ly/3r0Q9vk
- 請問Wen平時如何觀察趨勢的呢?比如說哪些平台或是通過哪些管道? Read books with real number
- 在創業初期是怎麼決定對於團隊是付高薪水還是配股來留存人才? 薪水結構相對是有競爭力的, 而股權方面:Initial employee option pool is 10%, Series A replenish it up to 15%。 Wen 提到這個結構並沒有一個出處, 但是參考其他投資人及公司的創辦人得到的。
這段訪談算是初步的了解他們回台創業的想法與歷程,其中當然還有很多問題值得去探訪, 但我們可能需要另外 3 個小時才可以把問題問完,讓我們期待他們產品上線後的良好反饋, 我可以半年後再邀請他們和我們做一次 follow up 的訪談, 看他們的最新進度。
如果你還沒有觀看這次超精彩的直播訪問, 歡迎找時間觀看, 並學習他們的思考。 也歡迎留言你的心得及感受, 有任何產品建議及試用心得, 也歡迎提供。
同時也有3部Youtube影片,追蹤數超過28萬的網紅含老闆,也在其Youtube影片中提到,一直以來我都沒有跟你們認真的說 其實我看的到..... 魔法少女Magicami 「百萬玩家突破感謝祭」的特別活動 現在進入MGCM遊戲內就可以看到 玩家們心中的最強魔法少女公布結果唷👉️https://rcv.johren.net/api/surl?urid=Eds9t4PU 或是直接點進活...
「facebook api是什麼」的推薦目錄:
- 關於facebook api是什麼 在 半路出家軟體工程師在矽谷 Facebook 的最佳解答
- 關於facebook api是什麼 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於facebook api是什麼 在 矽谷輕鬆談 Just Kidding Tech Facebook 的最佳解答
- 關於facebook api是什麼 在 含老闆 Youtube 的最佳貼文
- 關於facebook api是什麼 在 Untyped 對啊我是工程師 Youtube 的最佳貼文
- 關於facebook api是什麼 在 Untyped 對啊我是工程師 Youtube 的最佳貼文
- 關於facebook api是什麼 在 API是什麼 Facebook Graph API - 網頁設計 的評價
- 關於facebook api是什麼 在 解析Facebook 的API 重大變更與Cambridge Analytica 事件 的評價
- 關於facebook api是什麼 在 圖形API - 文件 的評價
- 關於facebook api是什麼 在 【Facebook轉換API教學】一次搞清楚CAPI 的用途和設定步驟 的評價
- 關於facebook api是什麼 在 EP1. 我要怎麼申請Facebook API?好像很難又好像很簡單欸! 的評價
- 關於facebook api是什麼 在 Graph API是什麼東東? - 阿兩的筆記本Ryoutsu's Notebook 的評價
- 關於facebook api是什麼 在 6.4 Facebook API - 宅學習 的評價
- 關於facebook api是什麼 在 【焦點產品】Facebook 全新商務工具:轉換API By iSPOT Media 的評價
- 關於facebook api是什麼 在 2021 Facebook 下廣告秘密武器- 轉換API 行銷人必讀! 的評價
- 關於facebook api是什麼 在 Day 4 : Facebook api - login - iT 邦幫忙 的評價
- 關於facebook api是什麼 在 Facebook API · 專題菁英班- JavaScirpt爬蟲專案 的評價
- 關於facebook api是什麼 在 裝比不裝更有效|Facebook 轉換API (CAPI) 基本介紹 - AdHub 的評價
- 關於facebook api是什麼 在 Facebook Graph Api 教學,1秒將臉書貼文轉官網 - 野薑設計 的評價
- 關於facebook api是什麼 在 Facebook Graph API 與Demo Example | Summer。桑莫。夏天 的評價
- 關於facebook api是什麼 在 一文详解Facebook 广告API,入门学习看这一篇就够了! - 出海易 的評價
- 關於facebook api是什麼 在 Facebook 轉換API 網羅數據漏網之魚 - CloudAD 的評價
- 關於facebook api是什麼 在 網站串接Facebook粉絲專頁API?取得FB粉專永久存取權杖 ... 的評價
- 關於facebook api是什麼 在 CONVERSION API是什麼?如何取得存取權杖? - 縮短網址 的評價
- 關於facebook api是什麼 在 如何全面追蹤顧客購物行為? SHOPLINE 串接「 Facebook ... 的評價
- 關於facebook api是什麼 在 Conversions API ( 轉換API )廣告成效實測!同場加映 ... 的評價
- 關於facebook api是什麼 在 探索Facebook 隱藏的秘密: 使用Graph API - YouTube 的評價
- 關於facebook api是什麼 在 探索Facebook 隱藏的秘密: 使用Graph API - YouTube 的評價
- 關於facebook api是什麼 在 【網絡營銷知識庫】比Facebook 像素更強的秘密武器 的評價
- 關於facebook api是什麼 在 私藏版丨Facebook 转化API 设置教程 - 知乎专栏 的評價
- 關於facebook api是什麼 在 如何利用FB CAPI 轉換API 功能提高廣告成效,突破隱私權限制 的評價
- 關於facebook api是什麼 在 Cookie被封殺! 廣告成效變差? WordPress 安裝Facebook(Meta ... 的評價
- 關於facebook api是什麼 在 Facebook API « Coding 之路,不由分說 - 黯雲居 的評價
- 關於facebook api是什麼 在 【案例】Facebook 轉換API 優化廣告定位和成效分析 - 91APP 的評價
- 關於facebook api是什麼 在 [Facebook API] Facebook Login 並取得用戶基本資料 - - 點部落 的評價
- 關於facebook api是什麼 在 Facebook登入-Facebook SDK API - 矛魚盾 的評價
- 關於facebook api是什麼 在 使用Python 自动化Facebook API(使用Python 在Facebook 上 ... 的評價
- 關於facebook api是什麼 在 [Facebook] 圖形API測試工具的介紹(建置發文系統到指定的社團 ... 的評價
- 關於facebook api是什麼 在 網店店主如何提升Facebook 廣告成效?- 轉換API - SHOPAGE 的評價
- 關於facebook api是什麼 在 Facebook推出Graph API:语义网的未来?_SOA_Dilip ... - InfoQ 的評價
- 關於facebook api是什麼 在 使用appsecret_proof 增強從伺服器呼叫Facebook Graph API ... 的評價
- 關於facebook api是什麼 在 Query Facebook 打卡地點by Graph API | Yancy's RD Life 的評價
- 關於facebook api是什麼 在 Query Facebook 打卡地點by Graph API | Yancy's RD Life 的評價
- 關於facebook api是什麼 在 facebook api功能有哪些 - 稀土掘金 的評價
- 關於facebook api是什麼 在 Ep14. 如何取得FB粉專像素facebook pixel & 轉換API 的評價
- 關於facebook api是什麼 在 [即將推出] 設定Business Data API |Facebook 廣告 的評價
- 關於facebook api是什麼 在 使用Facebook 轉換API - 1shop 一頁購物 的評價
- 關於facebook api是什麼 在 免寫CODE一鍵快速部署Facebook的轉換API與傳送需要的事件 的評價
- 關於facebook api是什麼 在 串接Facebook 轉換API (Conversions API) - meepShop 教學網站 的評價
- 關於facebook api是什麼 在 [PHP] 如何使用Facebook 帳戶實作用戶登錄和註冊自己的網站 ... 的評價
- 關於facebook api是什麼 在 [教學] Facebook APP ID 申請,建立應用程式取得APP 密鑰 的評價
- 關於facebook api是什麼 在 Facebook - 维基百科,自由的百科全书 的評價
- 關於facebook api是什麼 在 【Shopify香港】什麼是Facebook Conversion API (CAPI ... 的評價
- 關於facebook api是什麼 在 [Python教學] Facebook圖形API測試工具,取得粉絲頁按讚數 的評價
- 關於facebook api是什麼 在 4.2 Facebook Graph API - Python web crawler note - GitBook 的評價
- 關於facebook api是什麼 在 [爬蟲]如何用Python與Facebook API蒐集粉絲專頁的資訊 ... 的評價
- 關於facebook api是什麼 在 客製化按鈕及串接FB登入個人資料 - camel 's blog 的評價
- 關於facebook api是什麼 在 使用FB Conversions API增加事件與Facebook Pixel兼容 - 歐斯瑞 的評價
- 關於facebook api是什麼 在 Facebook转化率API:营销人员需要了解的一切 的評價
- 關於facebook api是什麼 在 [FB] Facebook API 分享– 設定參數 - jsnWork 的評價
- 關於facebook api是什麼 在 轉:Facebook API Example - 第一次使用、範例和教學筆記 的評價
- 關於facebook api是什麼 在 Facebook 資料共用· Shopify 說明中心 的評價
- 關於facebook api是什麼 在 R 軟體與Facebook API - Text Mining 的評價
- 關於facebook api是什麼 在 facebook api在Youtube上受歡迎的影片介紹|2022年06月 的評價
- 關於facebook api是什麼 在 [Facebook]Graph API - Read Data - 賽拉維的秋天- 痞客邦 的評價
- 關於facebook api是什麼 在 为什么Facebook转换API在不那么饼干的未来内容 的評價
- 關於facebook api是什麼 在 python+face graph api+facebook sdk - GitHub Gist 的評價
- 關於facebook api是什麼 在 python+face graph api+facebook sdk - GitHub Gist 的評價
- 關於facebook api是什麼 在 設定Facebook Conversion API (a.k.a 伺服器端API) | 一頁商店 ... 的評價
- 關於facebook api是什麼 在 一篇文章带你认识Facebook Conversion API - 领英(中国) 的評價
- 關於facebook api是什麼 在 透過Conversions API與Facebook分享活動和網站資料 的評價
- 關於facebook api是什麼 在 [Facebook]如何建立應用程式、取得API密鑰? - 香腸炒魷魚 的評價
- 關於facebook api是什麼 在 私藏版丨Facebook 转化API 设置教程 - AMZ123 的評價
- 關於facebook api是什麼 在 Facebook API接口| Learn PlayCanvas 的評價
- 關於facebook api是什麼 在 for Silverlight使用的FaceBook API -.NET Walker 的評價
- 關於facebook api是什麼 在 vue3 使用facebook login api | Penueling 磐凌科技 的評價
- 關於facebook api是什麼 在 facebook api爬蟲的蘋果、安卓和微軟相關APP - 疑難雜症萬事通 的評價
- 關於facebook api是什麼 在 Facebook 釋出Messenger 聊天機器人API,用人工智慧與使用 ... 的評價
- 關於facebook api是什麼 在 但是否代表API也連結好?有沒有專人可以協助? - Wixhk 的評價
- 關於facebook api是什麼 在 Facebook转换API:一切营销人员都需要知道 的評價
- 關於facebook api是什麼 在 自己筆記- 使用Facebook API (一) 的評價
- 關於facebook api是什麼 在 【教學】Facebook像素|設定Facebook轉換API - JOO 的評價
- 關於facebook api是什麼 在 【專案紀錄】用Python 做Facebook API爬蟲 - 再生總體框架 的評價
- 關於facebook api是什麼 在 以编程方式获取使用Facebook Graph API的访问令牌 - 七牛云 的評價
- 關於facebook api是什麼 在 貓桑觀察誌: [宅] facebook開發日誌- facebook API入門(1) 的評價
- 關於facebook api是什麼 在 後App 時代來臨?Facebook 正式開放Messenger 機器人API! 的評價
- 關於facebook api是什麼 在 資料分析入門:具有影響力的文章關鍵字 - MOLi Blog 的評價
facebook api是什麼 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] [ZKP 讀書會] Trust Token Browser API
✍️ Yuren Ju
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Trust Token API 是一個正在標準化的瀏覽器 API,主要的目的是在保護隱私的前提下提供跨站授權 (Cross-domain authorization) 的功能,以前如果需要跨站追蹤或授權通常都使用有隱私疑慮的 Cookies 機制,而 Trust Token 則是希望在保護隱私的前提下完成相同的功能。
會在 ZKP (Zero-knowledge proof) 讀書會研究 Trust Token 主要是這個 API 採用了零知識證明來保護隱私,這也是這次讀書會中少見跟區塊鏈無關的零知識證明應用。
問題
大家應該都有點了一個產品的網頁後,很快的就在 Facebook 或是 Google 上面看到相關的廣告。但是產品網頁並不是在 Facebook 上面,他怎麼會知道我看了這個產品的頁面?
通常這都是透過 Cookie 來做跨網站追蹤來記錄你在網路上的瀏覽行為。以 Facebook 為例。
當使用者登入 Facebook 之後,Facebook 會透過 Cookie 放一段識別碼在瀏覽器裡面,當使用者造訪了有安裝 Facebook SDK 來提供「讚」功能的網頁時,瀏覽器在載入 SDK 時會再度夾帶這個識別碼,此時 Facebook 就會知道你造訪了特定的網頁並且記錄下來了。如此一來再搭配其他不同管道的追蹤方式,Facebook 就可以建構出特定使用者在網路上瀏覽的軌跡,從你的瀏覽紀錄推敲喜好,餵給你 Facebook 最想給你看的廣告了。
不過跨站追蹤也不是只能用在廣告這樣的應用上,像是 CDN (Content Delivery Network) 也是一個應用場景。CDN 服務 Cloudflare 提供服務的同時會利用 Captcha 先來確定進入網站的是不是真人或是機器人。而他希望使用者如果是真人時下次造訪同時也是採用 Cloudflare 服務的網站不要再跳出 Captcha 驗證訊息。
雖然 Cloudflare 也需要跨站驗證的功能來完成他們的服務,但是相較於 Google 或 Facebook 來說他們是比較沒那麼想知道使用者的隱私。有沒有什麼辦法可以保護使用者隱私的狀況下還能完成跨站驗證呢?
這就是今天要講的新 API: Trust Token。
Trust Token API - The Chromium Projects
Trust Token / Privacy Pass 簡介
Trust Token 其實是由 Privacy Pass 延伸而來。Privacy Pass 就是由 Cloudflare 所開發的實驗性瀏覽器延伸套件實作一個驗證機制,可以在不透漏過多使用者隱私的前提下實作跨站驗證。而 Trust Token 則是標準化的 Privacy Pass,所以兩個運作機制類似,但是實作方式稍有不同。
先看一下 Privacy Pass 是如何使用。因為這是實驗性的瀏覽器延伸套件所以看起來有點陽春,不過大致上還是可以了解整個概念。
以 hCaptcha 跟 Cloudflare 的應用為例,使用者第一次進到由 Cloudflare 提供服務的網站時,網站會跳出一些人類才可以解答的問題比如說「挑出以下是汽車的圖片」。
當使用者答對問題後,Cloudflare 會回傳若干組 blind token,這些 blind token 還會需要經過 unblind 後才會變成真正可以使用的 token,這個過程為 issue token。如上圖所示假設使用者這次驗證拿到了 30 個 token,在每次造訪由 Cloudflare 服務的網站時就會用掉一個 token,這個步驟稱為 redeem token。
但這個機制最重要的地方在於 Cloudflare 並無法把 issue token 跟 redeem token 這兩個階段的使用者連結在一起,也就是說如果 Alice, Bob 跟 Chris 都曾經通過 Captcha 測試並且獲得了 Token,但是在後續瀏覽不同網站時把 token 兌換掉時,Clouldflare 並無法區分哪個 token 是來自 Bob,哪個 token 是來自 Alice,但是只要持有這種 token 就代表持有者已經通過了 Captcha 的挑戰證明為真人。
但這樣的機制要怎麼完成呢?以下我們會透過多個步驟的例子來解釋如何達成這個目的。不過在那之前我們要先講一下 Privacy Pass 所用到的零知識證明。
零知識證明 (Zero-knowledge proof)
零知識證明是一種方法在不揭露某個祕密的狀態下,證明他自己知道那個秘密。
Rahil Arora 在 stackexchange 上寫的比喻我覺得是相對好理解的,下面簡單的翻譯一下:
假設 Alice 有超能力可以幾秒內算出樹木上面有幾片樹葉,如何在不告訴 Bob 超能力是怎麼運作並且也不告訴 Bob 有多少片葉子的狀況下證明 Alice 有超能力?我們可以設計一個流程來證明這件事情。
Alice 先把眼睛閉起來,請 Bob 選擇拿掉樹上的一片葉子或不拿掉。當 Alice 睜開眼睛的時候,告訴 Bob 他有沒有拿掉葉子。如果一次正確的話確實有可能是 Alice 幸運猜到,但是如果這個過程連續很多次時 Alice 真的擁有數葉子的超能力的機率就愈來愈高。
而零知識證明的原理大致上就是這樣,你可以用一個流程來證明你知道某個秘密,即使你不真的揭露這個秘密到底是什麼,以上面的例子來說,這個秘密就是超能力運作的方式。
以上就是零知識證明的概念,不過要完成零知識證明有很多各式各樣的方式,今天我們要介紹的是 Trust Token 所使用的零知識證明:DLEQ。
DLEQ (Discrete Logarithm Equivalence Proof)
說明一下以下如果小寫的變數如 c, s 都是純量 (Scalar),如果是大寫如 G, H則是橢圓曲線上面的點 (Point),如果是 vG 則一樣是點,計算方式則是 G 連續相加 v 次,這跟一般的乘法不同,有興趣可以程式前沿的《橢圓曲線加密演算法》一文解釋得比較詳細。
DLEQ 有一個前提,在系統中的所有人都知道公開的 G 跟 H 兩個點,此時以下等式會成立:
假設 Peggy 擁有一個秘密 s 要向 Victor 證明他知道 s 為何,並且在這個過程中不揭露 s 真正的數值,此時 Victor 可以產生一個隨機數 c 傳送給 Peggy,而 Peggy 則會再產生一個隨機數 v 並且產生 r,並且附上 vG, vH, sG, sH:
r = v - cs
所以 Victor 會得到 r, sG, sH, vG, vH 再加上他已經知道的 G, H。這個時候如果 Victor 計算出以下兩個等式就代表 Peggy 知道 s 的真正數值:
vG = rG + c(sG)vH = rH + c(sH)
我們舉第二個等式作為例子化簡:
vH = rH + c(sH) // 把 r 展開成 v - csvH = (v - cs)H + c(sH) // (v - cs)H 展開成 vH - csHvH = vH - c(sH) + c(sH) // 正負 c(sH) 消掉vH = vH
這樣只有 Peggy 知道 s 的狀況下才能給出 r,所以這樣就可以證明 Peggy 確實知道 s。
從簡易到實際的情境
Privacy Pass 網站上透過了循序漸進的七種情境從最簡單的假設到最後面實際使用的情境來講解整個機制是怎麼運作的。本文也用相同的方式來解釋各種情境,不過前面的例子就會相對比較天真一點,就請大家一步步的往下看。
基本上整個過程是透過一種叫做 Blind Signature 的方式搭配上零知識證明完成的,以下參與的角色分為 Client 與 Server,並且都會有兩個階段 issue 與 redeem token。
Scenario 1
如果我們要設計一個這樣可以兌換 token 來確認身分的系統,其中有一個方法是透過橢圓曲線 (elliptic curve) 完成。Client 挑選一個在橢圓曲線上的點 T 並且傳送給 Server,Server 收到後透過一個只有 Server 知道的純量 (scalar) s 對 T 運算後得到 sT 並且回傳給 Client,這個產生 sT 的過程稱為 Sign Point,不過實際上運作的原理就是橢圓曲線上的連續加法運算。
SignPoint(T, s) => sT
等到 Client 需要兌換時只要把 T 跟 sT 給 Server,Server 可以收到 T 的時候再 Sign Point 一次看看是不是 sT 就知道是否曾經 issue 過這個 token。
Issue
以下的範例,左邊都是 Client, 右邊都是 Server。 -> 代表 Client 發送給 Server,反之亦然。
// Client 發送 T 給 Server, 然後得到 sT
T -> <- sT
Redeem
// Client 要 redeem token 時,傳出 T 與 sT
T, sT ->
問題:Linkability
因為 Server 在 issue 的時候已經知道了 T,所以基本上 Server 可以透過這項資訊可以把 issue 階段跟 redeem 階段的人連結起來進而知道 Client 的行為。
Scenario 2
要解決上面的問題,其中一個方法是透過 Blind Signature 達成。Client 不送出 T,而是先透過 BlindPoint 的方式產生 bT 跟 b,接下來再送給 Server bT。Server 收到 bT 之後,同樣的透過 Sign Point 的方式產生結果,不一樣的地方是情境 1 是用 T,而這邊則用 bT 來作 Sign Point,所以得出來的結果是 s(bT)。
Client:BlindPoint(T) => (bT, b)
Server:SignPoint(bT, s) => sbT
而 Blind Signature 跟 Sign Point 具備了交換律的特性,所以得到 s(bT) 後可以透過原本 Client 已知的 b 進行 Unblind:
UnblindPoint(sbT, b) => sT
這樣一來在 Redeem 的時候就可以送出 T, sT 給 Server 了,而且透過 SignPoint(T, s) 得出結果 sT’ 如果符合 Client 傳來的 sT 就代表確實 Server 曾經簽過這個被 blind 的點,同時因為 T 從來都沒有送到 Server 過,所以 Server 也無法將 issue 與 redeem 階段的 Client 連結在一起。
Issue
bT -> <- s(bT)
Redeem
T, sT ->
問題:Malleability
以上的流程其實也有另外一個大問題,因為有交換律的關係,當 Client 透過一個任意值 a 放入 BlindPoint 時產生的 a(sT) 就會等於 s(aT):
BlindPoint(sT) => a(sT), a// a(sT) === s(aT)
此時如果將 aT 跟 s(aT) 送給 Server Redeem,此時因為
SignPoint(aT, s) => s(aT)
所以就可以兌換了,這樣造成 Client 可以無限地用任意數值兌換 token。
Scenario 3
這次我們讓 Client 先選擇一個純數 t,並且透過一種單向的 hash 方式來產生一個在橢圓曲線上的點 T,並且在 redeem 階段時原本是送出 T, sT 改成送出 t, sT。
因為 redeem 要送出的是 t,上個情境時透過任意數 a 來產生 s(aT) 的方法就沒辦法用了,因為 t 跟 sT 兩個參數之間並不是單純的再透過一次 BlindPoint() 就可以得到,所以就沒辦法無限兌換了。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, sT ->
問題:Redemption hijacking
在這個例子裏面,Client 其實是沒有必要傳送 sT 的,因為 Server 僅需要 t 就可以計算出 sT,額外傳送 sT 可能會導致潛在的 Redemption hijacking 問題,如果在不安全的通道上傳輸 t, sT 就有可能這個 redemption 被劫持作為其他的用途。
不過在網站上沒講出實際上要怎麼利用這個問題,但是少傳一個可以計算出來的資料總是好的。Client 只要證明他知道 sT 就好,而這可以透過 HMAC (Hash-based Message Authentication Code) 達成。
Scenario 4
步驟跟前面都一樣,唯一不一樣的地方是 redeem 的時候原本是傳 t, sT,現在則改傳 t, M, HMAC(sT, M),如果再介紹 HMAC 篇幅會太大,這邊就不解釋了,但可以是作是一個標準的 salt 方式讓 Hash 出來的結果不容易受到暴力破解。
這樣的特性在這個情境用很適合,因為 Server 透過 t 就可以計算出 sT,透過公開傳遞的 M 可以輕易地驗證 client 端是否持有 sT。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, M, HMAC(sT, M) ->
問題:Tagging
這邊的問題在於 Server 可以在 issue 階段的時候用不一樣的 s1, s2, s3 等來發出不一樣的 sT’,這樣 Server 在 Redeem 階段就可以得知 client 是哪一個 s。所以 Server 需要證明自己每次都用同樣的 s 同時又不透漏 s 這個純亮。
要解決這個問題就需要用到前面我們講解的零知識證明 DLEQ 了。
Scenario 5
前面的 DLEQ 講解有提到,如果有 Peggy 有一個 s 秘密純量,我們可以透過 DLEQ 來證明 Peggy 知道 s,但是又不透漏 s 真正的數值,而在 Privacy Pass 的機制裡面,Server 需要證明自己每次都用 s,但是卻又不用揭露真正的數值。
在 Issue 階段 Client 做的事情還是一樣傳 bT 給 Server 端,但 Server 端的回應就不一樣了,這次 Server 會回傳 sbT 與一個 DLEQ 證明,證明自己正在用同一個 s。
首先根據 DLEQ 的假設,Server 會需要先公開一組 G, H 給所有的 Client。而在 Privacy Pass 的實作中則是公開了 G 給所有 Client,而 H 則改用 bT 代替。
回傳的時候 Server 要證明自己仍然使用同一個 s 發出 token,所以附上了一個 DLEQ 的證明 r = v - cs,Client 只要算出以下算式相等就可證明 Server 仍然用同一個 s (記住了 H 已經改用 bT 代替,此時 client 也有 sbT 也就是 sH):
vH = rH + c(sH) // H 換成 bTvbT = rbT + c(sbT) // 把 r 展開成 v - csvbT = (v - cs)bT + c(sbT) // (v - cs)bT 展開成 vbT - csbTvbT = vbT - c(sbT) + c(sbT) // 正負 c(sbT) 消掉vbT = vbT
這樣就可以證明 Server 依然用同一個 s。
Issue
T = Hash(t) bT -> <- sbT, DLEQ(bT:sbT == G:sG)
Redeem
t, M, HMAC(sT, M) ->
問題:only one redemption per issuance
到這邊基本上 Privacy Pass 的原理已經解釋得差不多了,不過這邊有個問題是一次只發一個 token 太少,應該要一次可以發多個 token。這邊我要跳過源文中提到的 Scenario 6 解釋最後的結果。
Scenario 7
由於一次僅產生一個 redeem token 太沒效率了,如果同時發很多次,每次都產生一個 proof 也不是非常有效率,而 DLEQ 有一個延伸的用法 “batch” 可以一次產生多個 token, 並且只有使用一個 Proof 就可以驗證所有 token 是否合法,這樣就可以大大的降低頻寬需求。
不過這邊我們就不贅述 Batch DLEQ 的原理了,文末我會提及一些比較有用的連結跟確切的源碼片段讓有興趣的人可以更快速的追蹤到源碼片段。
Issue
T1 = Hash(t1) T2 = Hash(t2)T3 = Hash(t3)b1T1 ->b2T2 ->b3T3 -> c1,c2,c3 = H(G,sG,b1T1,b2T2,b3T3,s(b1T1),s(b2T2),s(b3T3)) <- sb1T1 <- sb2T2 <- sb3T3 <- DLEQ(c1b1T1+c2b2T2+c3b3T3:s(c1b1T1+c2b2T2+c3b3T3) == G: sG)
Redeem
t1, M, HMAC(sT1, M) ->
結論
Privacy Token / Trust Token API 透過零知識證明的方式來建立了一個不需要透漏太多隱私也可以達成跟 cookie 相同效果的驗證方式,期待可以改變目前許多廣告巨頭透過 cookie 過分的追蹤使用者隱私的作法。
不過我在 Trust Token API Explainer 裡面看到這個協議裡面的延伸作法還可以夾帶 Metadata 進去,而協議制定的過程中其實廣告龍頭 Google 也參與其中,希望這份協議還是可以保持中立,盡可能地讓最後版本可以有效的在保護隱私的情況下完成 Cross-domain authorization 的功能。
參考資料
IETF Privacy Pass docs
Privacy Pass: The Protocol
Privacy Pass: Architectural Framework
Privacy Pass: HTTP API
Cloudflare
Supporting the latest version of the Privacy Pass Protocol (cloudflare.com)
Chinese: Cloudflare支持最新的Privacy Pass扩展_推动协议标准化
Other
Privacy Pass official website
Getting started with Trust Tokens (web.dev)
WICG Trust Token API Explainer
Non-interactive zero-knowledge (NIZK) proofs for the equality (EQ) of discrete logarithms (DL) (asecuritysite.com) 這個網站非常實用,列了很多零知識證明的源碼參考,但可惜的是 DLEQ 這個演算法講解有錯,讓我在理解演算法的時候撞牆很久。所以使用的時候請多加小心,源碼應該是可以參考的,解釋的話需要斟酌一下。
關鍵源碼
這邊我貼幾段覺得很有用的源碼。
privacy pass 提供的伺服器端產生 Proof 的源碼
privacy pass 提供的瀏覽器端產生 BlindPoint 的源碼
github dedis/kyber 產生 Proof 的源碼
[ZKP 讀書會] Trust Token Browser API was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
facebook api是什麼 在 矽谷輕鬆談 Just Kidding Tech Facebook 的最佳解答
S1E38 矽谷資深軟體工程師後疫情時代面試心得 Facebook/Robinhood/Coinbase/DoorDash
2020 年是個動蕩不安的一年,因為疫情的關係,很多公司都在年中進行了規模不小的裁員,包含大家耳熟能詳的 Airbnb、Uber、Lyft、Yelp、LinkedIn、Mozilla、Intuit、Salesforce 以及 WeWork 等等族繁不及備載。根據 layoffs.fyi 的統計,這波裁員潮集中在今年的 3 月到 7 月,8 月以後逐漸趨緩。
這對於在這段期間要找工作的絕對不是件好事,因為很多人被裁員,意味著同樣的職缺會有更多競爭者,也因為景氣不好以及疫情不確定性的關係,很多公司開始減緩招人的腳步。不過 7、8 月以後情況逐漸好轉,隨著美國各大城市解除封城,人們意識到必須跟疫情共存好一陣子,於是實體經濟活動恢復了,美國人畢竟是擁有自由的靈魂不能隨便被囚禁的呀!最近是美國各公司的財報季,各大科技公司紛紛發布第 3 季的財報,表現都非常好,也應證了在疫情下經濟轉好的事實。
我在 8 月下旬的時候開始投遞履歷,9 月初開始電話面試,10 月中結束 Onsite 面試 (都是線上進行),面試了四間公司:Facebook、Robinhood、Coinbase 以及 DoorDash,最後拿了前三間公司的 Offer,級別都是資深工程師。在這篇文章我會分享各公司的面試流程以及體驗、我做了什麼準備、怎麼談薪水以及我最後的決定,希望可以對在美國求職的人有幫助!由於有簽保密協定的關係,我只會提到面試的流程,不會提到具體的題目以及 Offer 數字。
Medium 文章好讀版 https://bit.ly/2Ii9vLc
Apple Podcasts https://apple.co/36fLCMh
Spotify https://spoti.fi/2IcyJdv
#面試的動機
蛤!?面試不就是為了換工作嗎?對大部分的人或許是如此,但對我而言這次並沒有非換工作不可的理由。我在 Square 待了三年多,整體的滿意度一直都很好,公司的股票從我加入以後基本上都是一個上漲的趨勢,最近也來到歷史新高。一年多前從 Android 開發換到後端的 Traffic Infrastructure 組以後,更是一直處在學習的狀態,了解怎麼規模化公司的後端架構,支援更多的應用場景,工作上也需要一直動腦,思考各種方法的優缺點、我們為什麼要這樣做並且撰寫許多技術文件,負責的專案也很有影響力,最近的成果是把公司很重要的 reverse proxy 升級成 Envoy,讓系統的效能更好並且支援更多新的功能。或許因為疫情一直在家工作的關係讓我有點工作倦怠,但這個倦怠並不是源自於工作的不開心,而是真的在家太久了,很需要好好放個長假讓腦袋放空充電一下。
言歸正傳,這次面試的主要目的是測試自己的市場價值,看看自己能否適應資深工程師面試的強度,畢竟上次面試已經是四年前了 (當時的面試心得),很多當時對於面試的理解也需要進行修正,我的心態是保持開放的態度,如果遇到很好的機會,當然可以考慮換工作,沒有的話待在現在的公司也很好!另外我自己過去的主要經驗都是 Android 行動開發,在後端只有一年多的經驗,也很好奇這些公司會不會讓我面資深後端的缺,還是會將我過去經驗打折?事實證明是我多慮了,我面的這幾間公司都有把我在 Android 的年資完整算進去,最後也給了我資深軟體工程師的 Offer,Facebook 甚至幫我安排 E6 (Staff Level) 的面試,只是因為系統設計表現得不夠好,最後給我的是 E5 (Senior Level) 的 Offer。
我還蠻建議大家即便沒有特別想換工作,也可以定期去外面面試看看,在沒有非換不可的情況下,習慣面試的緊張感跟壓力,這樣會讓你以後的面試更自在,跟面試官可以像是在平常工作時一樣互動,發揮自己的實力。一開始會有這個觀念是在幾年前讀 hello, startup 這本書時看到,作者建議大家每一年定期去外面面試,審視自己的能力,進而補足自己不夠好的地方,當然我覺得每一年對一般人來說可能有點難,畢竟邊工作邊準備面試不是易事,而且還得跟公司請假去面試,但至少每兩三年可以去外面看看,避免自己的能力跟求職市場脫勾太久。在矽谷以專門招收資深工程師聞名的 Neflix 甚至在他們的文化守則裡提到:「員工的薪水取決於他們個人最高的市場價值,我們鼓勵員工去外面面試並且跟他們的主管討論,我們認為這是健康的行為。」
#資深工程師的優勢
在一般情況下,5 年以上工作經驗可以面資深工程師 (L5) 的職位,10 年以上工作經驗可以面 Staff level (L6) 以上的職位,我有約 6.5 年的工作經驗 (3 年台灣 + 3.5 年美國),所有公司都是讓我面資深工程師以上的職缺。
這次找工作我感受最深刻的事情就是:我再也不用海投一大堆公司了!四年前當我還是求職市場裡的菜雞的時候,投了超過 150 間公司,只有 1x 間公司回應我,轉換率不到 10%。這次 Facebook 跟 Robinhood 都是 recruiter 主動從 LinkedIn 聯繫我進行面試邀請,Facebook 的 recruiter 更是從 2019 年初就開始定期聯絡我,到後面我真的不好意思持續拒絕她,於是接受了面試的邀請,真的還蠻感謝她不斷地嘗試,讓我定期思考一下要不要面試。Coinbase 跟 DoorDash 我都是從官網直接投履歷,沒有透過內推,一個禮拜內就收到了 recruiter 的來信,而這也是我唯二主動申請的公司,真的從以前我找工作,到現在變成是工作機會找上我了。
另一個很大的改變是:刷題不再是最重要的一環。隨著你越來越資深,系統設計跟行為面試所佔的比例也會越來越高,而且除了年資以外,這兩種面試的表現基本上就決定了你的職等,Facebook 的 recruiter 也在電話中跟我說,針對比較資深的應徵者,Coding 的要求會比較寬容 (lenient),所以建議大家不要對刷題過度著迷,一昧的追求題數不是好事,而是應該重質不重量,題目是無限但觀念是有限的。
最後一個體悟是在拿到 Offer 之後,談判的空間變得很大。美國科技業的求職市場一直是呈現一個兩極化的狀態,對於剛畢業的人來說,競爭者多而且職缺少,公司有較高的話語權。但是當你是資深工程師以上的時候,情況就反過來了,大多數公司不管景氣如何,任何時候都在招有經驗的工程師,職缺一直開在那但總是招不滿。上次找工作的時候,能夠讓公司提高年薪 1 ~ 2 萬美金就歡天喜地了,但是這次有兩家公司給我的初始 Offer 跟最終 Offer 都差了好幾萬美金。
#準備過程
軟體工程師的面試主要分成三種:Coding、系統設計以及行為面試。我自己是花比較多時間在系統設計上面,再來是 Coding,最後是行為面試。
關於系統設計的準備,我在軟體工程師系統設計面試準備指南有比較完整的介紹,這邊補充說明一下,準備系統設計最好的方法是來自於工作,最好你工作上就是要去思考怎麼設計系統,各種方法的優缺點以及思考各種 edge case 以及解法,這樣子學到的深度跟廣度都遠多於看那些準備素材。如果工作上沒有碰到也沒關係,可以先從 system design primer 看起,理解系統設計的各種面向。另外我推薦看一些公司的 Tech talk 來了解他們實際上怎麼設計系統,為什麼要這樣做以及不同方法的 Trade-off 又是什麼,理解為什麼要做這個決定是最重要的。如果已經接近面試了,建議可以看 InterviewBit 的系統設計篇,總共有八題,我認為寫的還蠻好的,比 Grokking the System Design Interview 還深入,看個兩次完整理解以後對面試很有幫助。
Coding 的部分我還是要再強調一次,不要過度迷信刷題的數量,應該要重質不重量,重點放在在訓練你的解題思維以及邏輯思考,練習使用常見的資料結構並且把想法轉成可以執行的程式碼。剛開始寫題目的朋友,我會建議相同的題型一起刷,培養對同類型題目的敏銳度,題目難度主要以 Medium 為主,搭配少量的 Hard 題。
很多題目一開始寫不出來,或是寫不出最佳解是很正常的,如果一題你卡超過一個小時,建議可以參考討論區的最佳解,但是切忌直接照抄別人的解答,因為那可能不是最適合你的方式,比較推薦的方式是你去理解背後的演算法,清楚地知道每一個步驟,再用你自己方式寫出來,這樣即使換了一個程式語言,你應該也可以寫得出來。當你開始發現沒看過的題目你也可以自己想出最佳解,並且實作出來,程式碼也很精簡,那代表你已經成功培養出解題的思維了。
我自己還會做一件事,就是想辦法分辨好的題目跟壞的題目,有一些題目的答案很明顯就只適用於這一題,用一些很特殊且不好理解的方法、實際上工作也不可能用到,這類型的題目我就不會花太多心思在上面,如果真的被考到,我會認為這是面試官的不用心。相反地,有一些好的題目:在觀念上很實用、有好幾種解法、工作上有機會用到或是系列題,這種就很值得練習,比方說 Graph 或是 Design 題就是我很喜歡的類型。
雖然說題數不重要,還是提供我的數據給大家參考,我在寫了 50 題的時候開始安排電話面試,最後一個 Onsite 結束時寫了約 120 題,我是以比較新的題目以及高頻題為主。
最後是行為面試,要再細分的話可以分成兩種,一種是 Project Deep Dive,你選一個你最近做過的專案,解釋一下專案內容、解決了什麼樣的問題、你的角色是什麼、最後的成果以及中間遇到的困難,另一種面試是來判斷你是否符合公司的文化以及價值,衡量你過去解決衝突跟溝通的能力。不管是哪一種面試,只要你好好回顧你過去做過的事情,能夠完整講述前因後果,把自己的故事清楚地講給面試官聽,輔佐一些例子,基本上就不會有太大的問題。
#遠距面試 #VirtualOnsite
因為疫情的關係,大家都在家工作,所以所有的面試包含電話面試都改成線上視訊進行,這個情況至少要到 2021 年的夏天。遠端面試的好處就是你不需要舟車勞頓,時間安排上也比較彈性,但是壞處是跟面試官的溝通比較沒那麼順暢,線上的交流絕對是沒有實體見面來得好,而且有的面試官網路很差,我甚至有遇到差到面試官需要把影像關掉的情況。
另一個要注意的點是,系統設計的面試會需要用到線上白板來畫圖,我自己覺得沒有實體的白板順暢,主要有兩種方法,你可以使用 iPad 搭配 Apple pen,或是用鍵盤滑鼠直接拉,選一個自己習慣的方式,面試前稍微熟悉一下白板軟體的使用,面試也會比較順利。
#DoorDash
第一輪是一個小時的電話面試,前 20 分鐘聊過去的工作經驗以及這個組在做的事,後 40 分鐘 Coding。題目是一道經典的 Hard 題,我對於該題印象很模糊,於是在面試中慢慢想,最後是有跌跌撞撞的寫出來,當時自我感覺良好,面試官給我的感覺也蠻算滿意的,但是隔天還是收到了拒信。事後回想應該是因為這是經典題,所以標準相對高,我並不是一次就寫對,而是慢慢修正,所以相對於其他應徵者表現不算太突出。
#Robinhood
他們家固定有兩輪各一個小時的電話面試,第一輪前 15 分鐘給你一段程式碼,要找到潛在的 bug 並且問你要怎麼修正,後面 45 分鐘 coding,題目比較偏向 Robinhood 工作上會遇到的演算法題。第二輪是系統設計,這是我第一個系統設計面試,微緊張,原本以為表現不夠好,但從 recruiter 那得到的反饋是還蠻好的。
Onsite 出乎我意料只有三輪,一輪 45 分鐘 coding,一輪一小時的系統設計,以及 45 分鐘的 Project Deep Dive,Coding 也比較偏向實作工作上會遇到的問題,面試官提到不用特別在意效能,以實作出來並且跑過測資為主,最後 10 個測資我只過了 9 個,不算完美。接下來兩輪跟面試官都聊得蠻開心的,並且有蠻不錯的討論,最後順利拿到 Offer!面 Project Deep Dive 有個小插曲,面試官到一半網路突然掛了,他後半段只能打電話加入簡直尷尬。
#Coinbase
Coinbase 的面試體驗是所有公司裡最讚的!從面試的流程跟題目都可以感受到他們的用心,面試官的平均素質也很好,你可以感受到他們是真心想要認識你這個人,面試過程中對於很多問題都有深入地討論,對於我問的問題他們往往也能給出很好很真誠的答案。
不過他們的面試過程也是最累的,電面是一小時的 Coding,Onsite 總共有五輪,其中居然有兩輪各 90 分鐘的 Coding!你可以在自己的電腦使用平常的開發環境,並且分享螢幕,題目不是傳統的演算法題,而是要你實作一個小型專案,其中一輪是實作一個小遊戲,另一輪則是實作一個系統,最後要 call Coinbase 的 API,所以對於送出網路請求並且處理 JSON 要有一定的熟悉度才行。整體的面試過程還蠻好玩的,面試官也會幫你,但一輪 90 分鐘真的有點太久。另外有一輪一小時的系統設計,以及各 30 分鐘的行為面試跟 Hiring Manager 面試。總共五輪五小時,中間休息一小時,面完真的氣力放盡了。我對整體的表現還算滿意,沒有一輪有感覺明顯不好,最後順利拿到了 Offer。
#Facebook
雖然 Facebook 都是進去以後再經過 Bootcamp 新生訓練選組,但是應徵的時候就要分不同的 Track,主要的分類有 Product、Infrastructure、Android、iOS 以及 Machine learning,Coding 的部分應該都差不多,而系統設計會根據你選的 Track 而有所不同。recruiter 一直建議我選 Android ,畢竟我的履歷上 Android 還是佔了一大部分,她提到 Facebook 現階段非常缺 Android 的人,不過她也補充說明這不代表面試的標準會比較低就是了。我最後還是堅持選擇面 Infrastructure,這樣對我來說準備起來比較方便,不用再額外花心思準備 Android。
我的 recruiter 覺得我可能也適合面另一個職缺 Production Engineer,於是就介紹了另一個 recruiter 給我,我可以選擇同時面兩個缺,最後如果拿到兩個 Offer 可以到時候再決定。實際聊過以後我還是婉拒了,因為不想花時間準備 Linux System 面試。
我們也聊到了預期的級別,她說以我的經驗我可以選擇面 E5 或 E6,這讓我感到蠻意外的啦,平心而論我認為不管是年資和能力我都還沒有到 Staff Engineer 的水準,不過既然 E6 只比 E5 多一輪系統設計面試,我就大膽地挑戰 E6 了!
Facebook 除了系統設計是一小時以外,其餘的面試都是 45 分鐘,電話面試是一輪 coding,Onsite 總共有五輪,兩輪 coding、兩輪系統設計以及一輪的行為面試。最後 Facebook 給了我 E5 的 Offer,原因是兩輪系統設計一輪還不錯另外一輪普普,沒有達到 E6 的標準。
雖然我最後有拿到 Offer,但我還是必須說 Facebook 的面試體驗蠻差的,面試官給我的感覺是他們不在乎我這個人,只想趕快在有限的時間內盡可能地蒐集一些訊號來判斷我有沒有通過,我並不反對有效率地蒐集一些訊號,但是面試是雙向的,作為應徵者的我們同樣也在面試這間公司,面試時我也在看未來我會不會想要跟這個面試官一起工作?而 Facebook 在我的標準裡顯然是不及格的。當然也有可能是我運氣不好,剛好遇到這樣子的面試官,但這也代表 Facebook 對於面試官的訓練不夠嚴謹,導致素質參差不齊,又或者是面試體驗並不在 Facebook 優先考慮的事情,不管是什麼原因,這都是一個警訊。
這個現象在 Coding 面試尤其明顯,面試官就是在看你能不能在有限的時間快速寫出最佳解。不過我倒是沒想到在行為面試也會遇到一樣的問題,我的面試官就按著他預先準備好的問題一個一個問,大部分的時間他的眼睛都盯著螢幕在做筆記,我實在是不確定他有沒有在聽我說話,有時甚至還會問我剛剛已經回答過的內容。
除此之外,Facebook 要求在 45 分鐘內解出兩道程式題,通常都是 LeetCode 原題並且要求最佳解,即使這種面試或許對我是有利的 (其中一輪我只花了 30 分鐘就寫出兩題的最佳解,然後我們閒聊了 15 分鐘),但我認為這種填鴨式的面試方式完全不能反應一個人的工作表現,這或許可以招到一定聰明程度以上的人,但是他們不一定是個好的工程師或是很好合作的人。我認為維持這種大考式的 Coding 面試也是一種偷懶的表現,但這個面試形式卻會深深地影響招進去的人的類型,是我的話我會盡量避免跟這類型的人合作,因為我認為思考過程跟溝通比你能不能快速寫出最佳解還要重要。
如果這段文字有冒犯到在 Facebook 工作的朋友的話,我在這邊先說聲抱歉,但這確實是我面試完以後真實的感受。
#談薪水
近年來由於 levels.fyi 的關係薪水變得越來越透明,這對求職者來說是個好事,你可以知道某公司的某個級別合理的薪資範圍在哪裡。如果你對談薪水這個主題有興趣的話,可以參考這兩篇經典文章:
1. Ten Rules for Negotiating a Job Offer https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/
2. How Not to Bomb Your Offer Negotiation https://haseebq.com/how-not-to-bomb-your-offer-negotiation/
我自己談薪水的策略沒有那兩篇文章寫得那麼複雜,我認為最重要的原則是誠實,不要假裝你拿到其他公司的 Offer,也不要虛報你其他 Offer 的數字 (即便這個數字是合理的),你可以選擇性揭露你的資訊,對方問到你不想揭露的資訊時,你可以禮貌地說你不方便透露,但絕對不要說謊。
公司在給你 Offer 的時候會考慮到很多因素:年資、面試表現、現在的薪水以及職等、其他公司 Offer 以及其他的面試者等等。這其中大部分資訊我們是不會知道的,比如說每個因素佔的比重、總共有多少面試者、我們在所有面試者裡面的表現如何,而且年資跟面試表現基本上已經確定了,所以實際上你能夠用的資訊就是其他公司的 Offer 或是你現在的薪水以及職等 (當然是要比較高才有用)。
當然最有用的談判手段,就是你拒絕掉這個 Offer 也沒關係。公司招人需要成本,從一開始收履歷、電話面試到 Onsite 面試,他們已經在你身上花了這麼多時間,也給你 Offer 了,所以在這個階段公司也很希望你能加入,除非這是你夢想中的公司,你很怕談薪水所帶來的風險,不然一般來說求職者在這個階段是有比較大的話語權。
另一個建議是請把 recruiter 當成你的夥伴,通常他們是要看業績給獎金的,所以她是跟你站在同一陣線,要幫助你跟公司談出更好的薪水說服你加入。Facebook 的 recruiter 這方面做得很好,她很多資訊都很透明地分享給我,包含這個級別可以拿到最好的 Offer 以及我的面試表現,一開始給我初始 Offer 的時候還告訴我這只是標準包裹,她不預期我會接,整個很 Real!後來給我的 Offer 也比原來的高出了不少,並且我如果下定決心要加入 Facebook 的話,她可以幫我要到這個級別的頂包。
Robinhood 也對我蠻有誠意的,在過程中不斷溝通,安排我跟主管以及同事聊天,有必要的話還可以讓我跟上面的 VP 聊聊,解答我對於 Robinhood 所有的疑惑。後來在得知我有 Facebook 跟 Coinbase 的 Offer 以後,給了一個很有誠意而且超過 Facebook 的 Offer,真的是受寵若驚。Coinbase 給的 Offer 相對前兩家低了不少,而且往上談的空間不高,他們給的理由是他們現在使用的估值是兩年前募資的數字,所以實際上的股票價值遠高於那個數字,而且他們 Refresh 也會給的比較大方,讓你在四年以後薪水不會降。
#最後的決定
我在選擇公司時,通常會考慮三個點,第一個是這個職位本身,我在什麼組、負責的產品、使用的技術、發展的機會以及同事跟主管的做事風格等等,盡可能知道每天工作的樣貌,判斷自己未來的開心程度。第二個是關於公司,我會問自己兩個問題:
1. 公司的文化跟價值我是否認同?人生很短,千萬不要浪費時間在幫跟自己核心價值不合的公司賣命。
2. 我是否相信公司所描述的願景,公司在未來的 5 ~ 10 年內能持續成長並且有好的發展嗎?
第三個是薪資結構,包含了底薪、股票、簽約金、獎金以及 Refresh 等等,來預期未來幾年的薪資。
除了以上三點以外,還得考量到現在都是遠距上工,跟同事以及主管建立感情也相對比較困難,所以在新公司的適應難易度也得列入考慮。在綜合考量之下,我這次還是選擇先留在 Square,或許明年再看看有沒有更好的機會!
如果這篇文章有幫助到你,歡迎按讚拍手,有任何問題也可以在底下留言,或是私訊給我們也行!
facebook api是什麼 在 含老闆 Youtube 的最佳貼文
一直以來我都沒有跟你們認真的說
其實我看的到.....
魔法少女Magicami 「百萬玩家突破感謝祭」的特別活動
現在進入MGCM遊戲內就可以看到
玩家們心中的最強魔法少女公布結果唷👉️https://rcv.johren.net/api/surl?urid=Eds9t4PU
或是直接點進活動頁面看看也是可以啦!
千萬別錯過我們的小彩蛋喔😆
https://rcv.johren.net/api/surl?urid=E5CEjfxM
Johren遊戲平台:https://www.johren.net/
MMS出新衣服還有很多周邊商品啦!
歡迎大家一起買起來 給我們支持一下
https://reurl.cc/v5Wnme
https://www.mimosa-go.com/
🔔每週四新影片🔔http://bit.ly/MimosaBoss
🔥企業養成企劃🔥 ➔ http://bit.ly/Mimosa_Firm
🎧 草爺個人單曲-兄弟你說
https://youtu.be/MTYXorv2Zwg
🎧 草爺個人單曲-你聽我說
https://youtu.be/zJxZ1_1Qbn0
含羞草日記官方LINE🆔➔@dev4352v
加盟主專用官方LINE🆔➔@tyh178
含羞草日記全台加盟店及通路點
🌍http://bit.ly/Mimosa_MAP🌍
每次都不知道新的商品是什麼嗎?
這麼有趣的廣告你也想一看再看嗎?
趕快點擊這個連結!
【彈菸灰互聯網】
Facebook粉專➔https://www.facebook.com/tanyanhui178
讓你看到不一樣的我們喔!
🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶
【影片製作團隊】
📷攝影師:齊哥
🎬剪輯師:Quadrophenia
🖥️封面製作:Geniuswen
🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶
【含羞草日記】
YouTube 頻道➔ http://bit.ly/Mimosa_GO
Facebook粉專➔ http://bit.ly/Mimosa_FB
【含羞草】
含老闆生活日常 ➔ http://bit.ly/Mimosa_Bosslife
含老闆 ➔ http://bit.ly/Mimosa_boss
IG➔ http://bit.ly/IG_xiucaohan
抖音➔ http://bit.ly/TikTok-xiucaohan
🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶◆🔹◆🔶
【專屬熱愛我的你】
🔔含羞草日記_交流群 🔔➔https://reurl.cc/ex2Z5R
🔔含羞草日記LINE貼圖🔔➔ http://bit.ly/Mimosa_LINEQ
🔔含羞草日記頻道會員 🔔➔ http://bit.ly/Mimosa_VIP
🔔含羞草日記蝦皮賣場 🔔➔ http://bit.ly/Mimosa_SP
【推薦清單】
🔥含老闆系列🔥 ➔ http://bit.ly/Boss_Contain
🔥躺著做系列🔥 ➔ http://bit.ly/Boss_LieDown
🔥一小時挑戰🔥 ➔ http://bit.ly/Boss_Onehour
🔥第一次體驗🔥 ➔ http://bit.ly/Boss_Experience
🔥夾娃娃日常🔥 ➔ http://bit.ly/Boss_Clipdoll
#魔法少女Magicami #cos人氣票選 #百萬玩家突破感謝祭 #Johren ⭐️合作邀約聯繫窗口
合情合理工作室LINE ID:@792szoye【僅供商業接洽用,嚴禁聊天】
(請表明身分、邀約需求以及想合作頻道的對象等~~感謝您😆)
⭐合作信箱聯繫➔k5202299@bigmimosa.com⭐(請表明身分、邀約需求以及想合作頻道的對象等~~感謝您😆)
facebook api是什麼 在 Untyped 對啊我是工程師 Youtube 的最佳貼文
Coding vs Programming 軟體工程師在 編碼 or 編程? | 5 Differences between Coding and Programming【電腦說人話】
-
軟體工程師到底在幹嘛?內行外行怎麼說?
Coding? Programming? 程式設計?編碼編程?想到電腦科學就會想到這些詞,但是它們到底是什麼意思?差別又在哪呢?
讓凱心琳告訴你這兩個詞的5大層面的差別!
(Tools 使用工具, Expertise 專業知識, Approach 方法途徑, Outcome 成果產出, Learning 學習過程)
在這個人手好幾台電腦的時代,實在是有好多電腦的詞聽不懂。Cookie 不再是好吃的餅乾,Class不再是學生上的課,Bug 因為非常不一樣的原因而令人討厭。Coding, Programming 兩個詞表面上好像一樣,但是實際上卻截然不同。好多詞不懂~沒關係!讓 Untyped 為你解惑!
【電腦說人話】這個系列是希望透過口語化的方式,透過生活中的例子去介紹一些看似艱澀像外星語但實際上卻不難懂的電腦科學專有名詞。希望能讓曾經對這些詞彙充滿畏懼與疑惑的妳,能夠不再害怕,勇敢學習Computer Science!
【㊫ 電腦科學/軟體工程 學習資源 📖】
全端工程師密技 Full Stack Eng - Career Path (Codecademy)
https://bit.ly/3niTwLN
前端工程師密技 Front End Eng - Career Path (Codecademy)
https://bit.ly/32K1eql
用Scala學習函式程式設計
https://bit.ly/2IF0Thv
Scala 函数式程式設計原理
https://bit.ly/3kBQXTb
平行程式設計
https://bit.ly/3pCeaZf
Android 應用程式開發 專項課程
https://bit.ly/3lGCUwW
普林斯頓大學 電腦科學 演算法 基礎理論
https://bit.ly/3nxomAh
Go 語言學起來
https://bit.ly/35AWhlv
Parallel, Concurrent, and Distributed Programming in Java 專項課程
https://bit.ly/2IGnlH4
Java 軟體工程基礎課程
https://bit.ly/3fa4gJi
全端開發 跨平台手機app 開發 完整課程
https://bit.ly/2UCGWum
#程式設計 #Programming #電腦說人話
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
-
歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
每(隔週)週四晚上9點更新,請記得開啟YouTube🔔通知!
-
【相關連結】
Coding vs Programming
[https://www.codementor.io/@edwardbailey/coding-vs-programming-what-s-the-difference-yr0aeug9o]
[https://www.educba.com/coding-vs-programming/]
[https://www.goodcore.co.uk/blog/coding-vs-programming/]
【愛屋及烏】
Facebook 臉書粉專 👉 [https://www.facebook.com/untyped/]
Instagram 👉 [[https://www.instagram.com/untypedcoding/]
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
-
This video contains affiliate links, which means that if you click on one of the product links, I'll receive a small commission.
圖片影片音效:[giphy.com] [pngwave.com][freesound.org][soundbible.org]
【Disclaimer 聲明】
Some links are affiliated.
上面有些連結是回饋連結,如果你透過這些連結購買商品,我可以得到一些小獎勵,但不會影響到你購買的價格,甚至會是更低的價格!謝謝你的支持💕
facebook api是什麼 在 Untyped 對啊我是工程師 Youtube 的最佳貼文
API? IPA? 應用程式介面是什麼? API種類介紹 | What is API? REST? SOAP? 【電腦說人話】
-
API、IPA 傻傻分不清楚?某個app又發布了新的API?你知道應用程式之間是怎麼溝通的嗎?API好多種到底怎麼分?
公司的工程師同事又在討論新的API,啥?API是什麼?查了一下發現API的中文是應用程式介面。字都會唸但就是不懂。相信不論你有沒有接觸過Computer Science 電腦科學,可能都有聽過API這個詞。
凱心琳我曾經也被API這個詞搞得一頭霧水,大家都說它很重要它很棒,但是很少有人講得清楚他到底是什麼做什麼用的。一下REST一下SOAP的,到底在講什麼?甚至很多寫過API的工程師也無法解釋API的本質,以為所有的API都是同一種形式。這次要透過一些生活化的例子,介紹鼎鼎大名的API。並且分享Open API, Internal API, Partner API, Web Service, REST, SOAP 這些東西到底是什麼。
【電腦說人話】這個系列是希望透過口語化的方式,透過生活中的例子去介紹一些看似艱澀像外星語但實際上卻不難懂的電腦科學專有名詞。希望能讓曾經對這些詞彙充滿畏懼與疑惑的妳,能夠不再害怕,勇敢學習Computer Science!
#API #REST #電腦說人話
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
-
歡迎留言告訴我你的想法,或是你想認識的程式語言唷!
每(隔週)週四晚上9點更新,請記得開啟YouTube🔔通知!
-
【相關連結】
*What is an API? In English, please.*
[https://www.freecodecamp.org/news/what-is-an-api-in-english-please-b880a3214a82/]
[https://www.howtogeek.com/343877/what-is-an-api/]
[https://apifriends.com/api-management/what-is-an-api/]
*Types of APIs*
[https://rapidapi.com/blog/types-of-apis/]
[https://stoplight.io/api-types/]
[https://www.cevgroup.org/what-is-api/]
【What I used to make this video】
個人電腦:Apple MacBook Pro [https://amzn.to/2HKgI2T]
拍攝錄音錄影: iPhone X [https://amzn.to/3c0s6Fu]
相機: Canon 80D [https://amzn.to/2VVmiYz]
錄音: Rode [https://amzn.to/3aqnzL2]
鍵盤: Logitech MX Keys Wireless Keyboard [https://amzn.to/3awqi5L]
【愛屋及烏】
Facebook 臉書粉專 👉 [https://www.facebook.com/untyped/]
Instagram 👉 [https://www.instagram.com/untypedcoding/]
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
-
This video contains affiliate links, which means that if you click on one of the product links, I'll receive a small commission.
圖片影片音效:[giphy.com] [pngwave.com][freesound.org]
facebook api是什麼 在 解析Facebook 的API 重大變更與Cambridge Analytica 事件 的推薦與評價
Graph API 是Facebook 讓程式設計師可以用程式化的方式存取Facebook 資料的系統化介面,舉凡使用者在Facebook 上留下的任何資料、行為、足跡,都可以 ... ... <看更多>
facebook api是什麼 在 圖形API - 文件 的推薦與評價
圖形API 是應用程式讀取與寫入Facebook 社交關係圖的主要方法。我們所有的SDK 和產品皆會以某些方式與圖形API 有所互動,而且其他API 都是圖形API 的擴充功能,所以 ... ... <看更多>
facebook api是什麼 在 API是什麼 Facebook Graph API - 網頁設計 的推薦與評價
API 的核心架構,主要是開放物件功能和資訊打包成可物件連結的應用程式介面與其它網站可進行串接、共享,透過Facebook 廣大會員人數資訊,我們可以整合會員 ... ... <看更多>