原创 經典面試題32 - 主流開源協議的異同

問題 開源項目的開源協議對開發者和使用者都提供保護,常見的Apache License, GPL,MPL.等開源協議有什麼異同? 解答 免費開源協議對於開發者來說都是可以免費使用的,不同點在於修改後的對於是否強制要求公開其修改,是否可以使

原创 Github的大禮 - 私有倉庫免費

爲了讓更多開發者更容易的使用Github的服務,Github今天公佈了兩大更新: 免費的無限制(如使用人數)的私有倉庫。 簡單統一的企業版服務。 GitHub 免費服務 現在包括了不受任何限制的私有倉庫(先前Github的公共倉庫一

原创 GraphQL 從入門到放棄系列

使用 GraphQL,你可以將你所有的業務建模爲圖。 中文官網:http://graphql.cn/ REST是一種古老的面向服務端和客戶端的架構風格。它定義了一系列嚴格的構建API的原則,用簡單的方式描述資源,並認爲大部分時候違背這

原创 移動應用開發趨勢 - 2019

2019年已經到來,雖然新的一年對於大部分人來說不會是新的開始,但是其依然是一個好的契機來展望未來。 移動應用設計開發時刻都在改變,人工智能,安全,小程序,物聯網和雲服務等移動開發話題在過去幾年廣受關注,那麼2019年呢?我們來看看哪些話題

原创 少兒編程 - Scratch編程工具

Scratch(https://scratch.mit.edu/)是麻省理工學院(MIT)媒體實驗室終身幼兒園組(MIT lifelong Kindergarten Group)設計開發的少兒編程工具,是一個免費項目。Scratch 已翻

原创 簡介傳輸接口VGA、DVI、HDMI和DP

顯卡上最常見的輸出接口主要有四種: VGA (Video Graphics Array) DVI (Digital Visual Interface) +HDMI (High-Definition Multimedia Interfac

原创 2018移動應用設計十大趨勢

智能手機已經成爲生活中不可分割的一部分,早上喚你起牀的鬧鐘,日常溝通的微信,聽音樂,看新聞和視頻,閱讀郵件,更新項目狀態等, 每件事都可以無縫地在移動設備上進行,現在已經有21億人擁有自己地智能手機。 25歲以上的成年人每天使用手機264

原创 REST API行業討論:OData vs GraphQL vs ORDS

同事翻譯了一篇關於Rest API的文章,有點意思,分享一下。 傳送門鏈接 ===========正文=============== 如何與REST API交互正在不斷地發展。在這篇文章中,我們來看看一些處於Web服務技術前沿的標準。 Pr

原创 經典面試題31 - 快速排序

問題 請使用快速排序把數組從低到高排序。 如數組 [ 10, 0, 3, 9, 2, 14, 8, 27, 1, 5, 8, -1, 26 ] 解答 快速排序是歷史上最有名的算法之一,也是遞歸算法的經典案例。 直接來看看Swi

原创 Kotlin代碼規範 - Android版

衆所周知,Android團隊已經接納Kotlin爲其平臺性開發語言,可以預見將來會有越來越多的Android項目用Kotlin寫成。隨着Kotlin被引入到不同的開發團隊,與其相關的代碼規範也會越來越受關注。 趁着週末有空翻譯

原创 經典面試題29 - 反向代理

問題 請解釋什麼叫反向代理? 解答 說起反向代理,我們先來看看什麼是正向代理。 正向代理的過程,它隱藏了真實的請求客戶端,服務端不知道真實的客戶端是誰,客戶端請求的服務都被代理服務器代替來請求,知名的科學上網工具shadows

原创 經典面試題30 - 離屏渲染

問題 請解釋什麼是離屏渲染? 解答 離屏渲染是GPU屏幕渲染的一種,一般可以分爲三種類型: On-Screen Rendering,意爲當前屏幕渲染,指的是GPU的渲染操作是在當前用於顯示的屏幕緩衝區中進行。 Off-Scr

原创 經典面試題27 - 猜箱子

問題 有三個箱子,其中一個只有蘋果,一個只有桔子,一個既有蘋果又有桔子。這些箱子都被貼錯了標籤,無法確認裏面到底是哪種水果。 你只能打開一個箱子,而且不能向裏面看,你可以拿出一個水果。通過觀察它,你能夠立即正確分辨出三個箱子中

原创 經典面試題28 - 短鏈接

問題 設計一個類似於TinyURL的縮短鏈接長度的服務,用戶在訪問短鏈接的時候可以自動跳轉到長鏈接。 例子長鏈接: https://zhuanlan.zhihu.com/p/21320786 生成的短鏈接: https://t

原创 Swift 經典基礎面試題

1: 運行下面代碼中的變量len值是多少? 爲什麼? var array1 = [1, 2, 3, 4, 5] var array2 = array1 array2.append(6) var len = array1.count 解答: