1. 程式人生 > >01-撩課-Python面試寶典-第一篇

01-撩課-Python面試寶典-第一篇

一. 儘可能詳細的描述出一個應用軟體, 比如QQ, 在計算機中執行時涉及的軟硬體, 以及說明我們程式設計的側重點?

  1. 電腦開機, 從硬碟中(外部儲存裝置)載入作業系統(系統軟體)到記憶體(內部儲存裝置), 並執行作業系統
  2. 下載QQ軟體(網路請求)到本地電腦磁碟中(外部儲存裝置), 安裝後, 雙擊執行(載入到記憶體, 並基於作業系統通過CPU執行程式內的指令)
  3. 通過QQ傳送語音或視訊: 使用麥克風採集音訊或者連同攝像頭採集視訊(輸入裝置), 傳送給對方(網路請求)
  4. 所以, 基於以上, 我們程式設計主要指的是根據需求, 使用某一種程式語言, 編寫出不同的功能程式碼(網路請求, 資料處理, GUI介面展示等等), 最後結合各種文件素材(程式圖示圖片, 音訊, 配置檔案等等) 組成一個完整的"應用軟體"; 打包好相關的執行環境, 供他人執行使用.

二. 嘗試解釋下, 我們作為開發人員, 在以後的公司實際開發中, 常打交道的部門, 以及打交道的經驗?

首先搞清楚, 一個專案開發的部門組成, 大致如下:
(1) 產品經理
負責制定需求, 產品原型圖的設計, 和程式設計師幹架等
就是, 咱們做的到底都是啥玩意, 哪些功能要做, 哪些不要做, 比如, 讓手機殼隨著使用者心情變色; 這都是極品產品經理;
還有一個可怕的就是, 像一些小公司, 啥都不懂的老闆也會跟著提需求; 和老闆合作的其他老闆, 也會提一些神奇的建議(誰讓別人是甲方呢); 此時, 有節操的產品經理還會反抗, 沒節操的, 哎, 都轉移給了開發人員… 去做吧, 老闆說的, 一句話, 我們開發人員就想著法弄吧
(2) 專案經理(有的兼任開發人員);
根據原型圖負責將需求轉換成實施步驟, 搭建好基本的專案結構, 並配置好原始碼環境; 分配給不同的小弟去做; 還會排程其他部門, 比如美工, 來提供相關素材; 而且, 專案經理會跟進專案開發進度, 就是看著你幹活, 每天做的啥玩意; 有的技術難點小弟搞不定, 就得自己上;
(3) 各角色開發人員
職責就是根據分配的需求, 進行程式碼實現, 簡稱"碼農", “碼畜”…
通常除下編寫程式碼外, 還需要背鍋
開發大致分為前端和後端, 不管你處於哪一端, 都需要和另外一端人溝通; 比如後端, 需要提供介面, 編寫好介面文件; 前端根據介面文件傳送請求, 獲取和上傳資料;
兩者之間, 相親相愛, 一起調Bug, 一起和提出惡意需求的產品幹架;
所以, 除下敲程式碼外, 鍛鍊好身體也很重要;
(4) 和隊友打交道
一般我們開發, 很少一個人獨立開發, 根據專案大小不同, 分配的人員也大概在3-5人最為常見; 與他們溝通是最常見的事;
而且一般專案任務劃分, 是模組化, 元件化, 或者前後端分離等等方式, 儘可能保證大家都能同步開發, 而互相不干擾; 不然倆人做同一個功能, 那就亂套了;
此時, 最需要注意的問題, 其實是在於程式碼合併的問題; 也就是原始碼管理工具(git/svn); 你可以這麼理解, 我們大家寫不同功能的程式碼, 最終肯定要合到一個地方組成一份完整的, 可執行的程式程式碼;
但因為一個專案程式碼, 不管怎麼劃分, 都肯定有一些公共部分程式碼, 那此時, 大家的對公共部分的程式碼修改就可能在提交時產生衝突;
此時, 要求我們以下幾點:
(1) 修改公共程式碼時, 說一聲;
(2) 每天開始編寫程式碼前, 儘可能先從伺服器下載最新程式碼;
(3) 別亂刪別人東西, 也別改別人程式碼, 讓別人自己改; 切記
(4) 沒事多寫點註釋, 不然大家沒法溝通, 特別是寫SDK的; 不然很容易被打, 雖然每個程式設計師自己都不想寫, 但都要求別人寫的;
(5) 儘可能寫完一部分程式碼就提交, 避免產生大量衝突; 而且要先提交, 一旦產生衝突留給隊友解決; 你回家吃飯;
(6) 多做測試, 提交正確程式碼
(7) 測試時, 單獨開一個分支(理解為單獨一份程式碼); 別直接在正式專案那份程式碼中做
(8) 對新人好點好伐? 大家都是這麼過來的

三. 作為碼農必須瞭解程式語言的概念, 請闡述

機器語言
- 全部都是由0和1的二進位制程式碼組成, 可以由計算機直接執行, 效率最高;
- 但因為人看不懂, 不好理解, 所以不適合程式設計使用;
例如
1+1 對應程式碼如下
0000000000000001 1101100100 0000000000000001
組合語言
- 使用了一些助記符來代替0和1, 相對來說更好理解一些;
例如
1+1 對應程式碼如下
mov ax,1
add ax,ax
- 最終還是要轉換為機器語言執行, 多了一層轉換, 所以效率低於機器語言;
- 通用性依然不強,理解較差,學習曲線大, 編寫大型程式繁雜;
- 但因為其效率高, 所以在某些特殊行業中,還是有不少使用;
高階語言
- 接近於人類自然語言的單詞和符號來表述低階語言(機器和彙編);
例如
1+1 對應程式碼就是 1+1
- 可閱讀性, 可移植性較高
- 缺點就是效率不如機器語言和組合語言高;

四. Python語言的簡介

  1. 定位
    一門解釋型的高階程式語言
    也可以說先編譯後解釋
    因為沒法嚴格的劃定編譯和解釋的概念
  1. 作者
    Guido van Rossum(吉多·範羅蘇姆), 人稱“龜叔”
    荷蘭人
    1991年初,Python釋出了第一個公開發行版
  1. 特點
    簡單
    語法簡單
    豐富的庫支撐
    優雅
    可移植性
    程式碼規範性
    膠水語言
  1. 應用領域
    Web全棧開發
    圖形介面開發
    大資料
    人工智慧
    爬蟲
    系統網路運維
    雲端計算系統管理
  1. Python版本
    目前流行版本兩個
    Python2.x
    Python3.x

五. Python程式的執行過程?

Python程式執行過程