原创 經典面試題17 - 搜索編程判斷兩個鏈表是否相交

問題: 給出兩個單向鏈表的頭指針(如下圖所示), 比如h1、h2,判斷這兩個鏈表是否相交。這裏爲了簡化問題,我們假設兩個鏈表均不帶環。 解答 直接循環判斷第一個鏈表的每個節點是否在第二個鏈表中。但這種方法的時間複雜度爲O(Length(

原创 經典面試題19 - 求鏈表倒數第k個節點

問題 輸入一個單向鏈表,輸出該鏈表中倒數第k個節點,鏈表的倒數第0個節點爲鏈表的尾指針。 解答 設置兩個指針 fast、slow,首先 fast 和 slow 都指向 head,然後 fast 向前走 k 步,這樣 fast 和 slow

原创 經典面試題18 - 在O(1)時間刪除鏈表節點

問題: 給定鏈表的頭指針和一個節點指針,在O(1)時間刪除該節點。 解答: 主要思想是「狸貓換太子」,用下一個節點數據覆蓋要刪除的節點,然後刪除下一個節點。 代碼如下: //O(1)時間刪除鏈表節點,從無頭單鏈表中刪除節點。 void de

原创 看圖學 - Git

Git 以其開源、簡單、快捷、分佈式、高效等特點成爲當前最流行的源代碼管理工具, 我們來通過以下三張圖來認識一下Git及其在項目中使用思路。 分佈式 Git作爲分佈式版本控制系統的代表,客戶端並不僅僅獲得最新版本的文件快照,而是把原始

原创 經典面試題22 - 二分查找

問題 針對有序的數組,實現二分查找算法。 例子:已知數組array: [2, 7, 8, 12, 34, 44, 56] ,和目標值 target, 求目標值在數組中的下標,如果不存在返回-1。 解答 《編程珠璣》的作者Jon Bentl

原创 經典面試題23 - 扔雞蛋的技巧

問題 有一棟100層的高樓,一個雞蛋從第N層及以上的樓層落下來會摔破, 在第N層以下的樓層落下不會摔破。給你2個雞蛋,設計方案找出N,並且保證在最壞情況下, 最小化雞蛋下落的次數。(假設每次摔落時,如果沒有摔碎,則不會給雞蛋帶來損耗) 解

原创 經典面試題26 - 如何優化移動App性能

問題 據報告稱64%的智能手機用戶期待頁面在4秒內加載完成,性能已經成爲用戶體驗的核心部分之一,請問如何優化移動App性能? 解答 首先,所有相關人員把高性能作爲核心考量的標準之一是不可或缺的,統一思想認識才能制定流程並執行下去,這樣才能

原创 Flask+uWSGI+Nginx模型 Nginx,uWSGI,Flask 之間的對話

Web服務器層 Web服務器主要是接收 HTTP 請求並返回響應。常見的 web服務器有 Nginx,Apache,IIS等。在上圖1的三層結構中,web服務器是最先接收用戶請求的,並將響應結果最終返回給用戶。 WSGI層 WSGI 是一

原创 不要被自己所謂的努力所感動 - OKR

如果看到這個標題,以爲這是一篇雞湯類反智的文章,那就大錯特錯。 最近公司在工作中嘗試引入OKR的理念, 在瞭解OKR的過程中,發現其中包含的一些套路值得讓人思考。 OKR(Objectives and Key Results)即目標與關

原创 Swift 5 新特性之三 Dictionary支持compactMapValues

在理解新方法compactMapValues之前,建議先了解已有的方法map,filter, reduce。如有疑惑可以參看這裏。 Dictionary支持compactMapValues 提案出處: https://github.com

原创 Swift 5 新特性之二 Identity key path

在理解身份特徵路徑(Identity key path)之前,必須要對key path有清晰的認識,如key path的基本定義,ReferenceWritableKeyPath和WritableKeyPath的關係,如何把兩個key p

原创 Swift 5 新特性系列之一 編譯條件支持小於

Swift 5已經發布將近一個月了(官方網站), 新的特性包括對String重新實現,新的數據類型(Result?), 支持動態callable類型等,相信很多人已經選擇將升級已有項目到Swift 5來嚐鮮,個人計劃整理Swift 5的新

原创 經典面試題34 - 字符串的全排列

問題 給定兩個字符串,如何判斷一個是否爲另一個的全排列字符串。 全排列 - 通過改變順序可以使得兩個字符串相等。 假設給定字符串 ‘bacda’和‘aabcd’, 其就是全排列字符串。 解答 如果不考慮運行效率,可以分別對兩個字符串進行排

原创 經典面試題33 - 字符串有無重複字符

問題 如果判斷一個字符串內有無重複字符? 假設給定字符串 ‘abca’, 其中字符a重複出現。 解答 如果沒有更多的條件限制,這個題目還是很簡單的。但如果加上不允許定義附加的數據結構的限制,實現會複雜很多,有興趣的可以做個家庭作業。 我們

原创 Flask+uWSGI+Nginx模型

Web服務器層 Web服務器主要是接收 HTTP 請求並返回響應。常見的 web服務器有 Nginx,Apache,IIS等。在上圖1的三層結構中,web服務器是最先接收用戶請求的,並將響應結果最終返回給用戶。 WSGI層 WSGI 是一