自學python半年,我入職了......

程式汪小陳發表於2022-02-28

前言

終於,通過半年的自我修煉,我也踏入了python這個行業。

真的很不容易,雖然現在自己還是一個python小白,沒有什麼實際的開發經驗,我還有很多事情沒有去做,但是我知道自己想要的是什麼,所以,既然選擇了python這條道路,我一定要堅定的走下去,等到四五年之後,一定會非常感謝今天努力的自己,到那個時候,應該也會對自己的生活感到滿意。

平凡的經歷

我是一個普普通通的人,家庭一般,沒有驚人的家庭背景;成績一般,上著一般的高中,一般的大學,日子也就這麼過著。2017年迎來了高中畢業,走上了人生道路上的第一個分叉路口–填報志願。因為高中成績一般,所有高中選擇了體育特長,憑藉體育的分數可以上一個本科院校,但當時我覺得專業是強於學校的,所以放棄了本科的體育專業,選擇了當時覺得非常高大上的專業–機電-VR專業。當時機電分為三個專業:新能源汽車、無人機、VR。任何一個在我當時看來都是會很火的專業,憧憬著未來的發展會一片光明,能夠走在普通專業的最前沿。可世事難料,由於我們是第一屆開展這個專業的學生,不管是師資還是器材,都沒有得到很好的供給,這也導致了我們學的都是理論知識,僅僅是在開學的第一節課讓我們體驗了一次VR場景。

與python的邂逅

之所以邂逅python是在網上無意中看到一個製作小遊戲的視訊,當時一下子就被吸引住了。python第一次出現在我眼前,由於見識過於狹窄,所以在當時並不知道python是什麼,只是偶爾會聽說誰誰誰是搞python的,至於到底是做什麼的,也就不關心了,而且一看python全是英文,果斷勸退。因為當時自己的發展方向並不在此,而是自以為很有前景的VR–虛擬與現實。

時間過得很快,一學期就這樣結束了,還好結業考試並不是很難,也就順利結業了。當時就已經感覺到了就業的危機感,VR專業也沒啥可以教我們的,當我想起python那已經是我報名培訓班的事情了。

培訓的經歷

為了給自己找一條出路,不至於畢業就失業,一次偶然的機會又讓我瞭解到python,當時也是聽說python很火,就業工資挺高的,諮詢了一番後就報名了,學費挺貴的,花了兩萬多塊錢,機構名我就不提了,因為當時還得在學校上課,於是就選擇了線上視訊學習,看錄製好的課程,自己跟著敲程式碼,週一到週五基本都是學到晚上十一二點,週末就出去做兼職填補培訓費,我記得當時身上並沒有多少錢,就選擇了分期付款,剛開始的幾個月只需要還三百多,可由於我在學校拖的時間太久了,後來慢慢一個月就要還一千多,所以只好週末去做兼職,也不敢和爸媽說,全憑自己做兼職還清了報名培訓的錢,當時不知道怎麼被輔導員知道了,還以為我借了校園貸或者什麼高利貸。後來快要畢業了,學到了不少東西,這時才明白python到底是幹嘛的,想著只要好好學完這六個月的課程,畢業後肯定能找一個不錯的工作。

找到工作

六個月結束後,大概過了兩週時間,找到了第一家開發公司,當時給的薪資是10k,其實是我自己開的,我知道對於一個python崗位來說這點工資算低的,但是自己已經很滿意了,就辦理了入職手續,開始了python的開發生涯。

算了算剛好六個月的時間,從開始學習python的知識,到入職的第一份python開發工作。在這六個月裡,出現過很多次想要放棄的念頭,這個時候就特別想家,特別想回家,但是,我堅持下來了,要是這樣就想回家鄉的話,為什麼我當初又要出來呢?

所以我一直告訴自己:請再努力一下,為了你想見的人,想做的事,想成為的自己。

python學習方案

下面是機構給我列的一百天計劃裡面的學習框架,我在這裡放上來。

Day 01~15 - Python 語言基礎

Day01 - 初識Python

Python簡介 - Python的歷史 / Python的優缺點 / Python的應用領域
搭建程式設計環境 - Windows環境 / Linux環境 / MacOS環境
從終端執行Python程式 - Hello, world / print函式 / 執行程式
使用IDLE - 互動式環境(REPL) / 編寫多行程式碼 / 執行程式 / 退出IDLE
註釋 - 註釋的作用 / 單行註釋 / 多行註釋

Day02 - 語言元素

程式和進位制 - 指令和程式 / 馮諾依曼機 / 二進位制和十進位制 / 八進位制和十六進位制
變數和型別 - 變數的命名 / 變數的使用 / input函式 / 檢查變數型別 / 型別轉換
數字和字串 - 整數 / 浮點數 / 複數 / 字串 / 字串基本操作 / 字元編碼
運算子 - 數學運算子 / 賦值運算子 / 比較運算子 / 邏輯運算子 / 身份運算子 / 運算子的優先順序
應用案例 - 華氏溫度轉換成攝氏溫度 / 輸入圓的半徑計算周長和麵積 / 輸入年份判斷是否是閏年

Day03 - 分支結構

分支結構的應用場景 - 條件 / 縮排 / 程式碼塊 / 流程圖
if語句 - 簡單的if / if-else結構 / if-elif-else結構 / 巢狀的if
應用案例 - 使用者身份驗證 / 英制單位與公制單位互換 / 擲骰子決定做什麼 / 百分制成績轉等級制 / 分段函式求值 / 輸入三條邊的長度如果能構成三角形就計算周長和麵積

Day04 - 迴圈結構

迴圈結構的應用場景 - 條件 / 縮排 / 程式碼塊 / 流程圖
while迴圈 - 基本結構 / break語句 / continue語句
for迴圈 - 基本結構 / range型別 / 迴圈中的分支結構 / 巢狀的迴圈 / 提前結束程式
應用案例 - 1~100求和 / 判斷素數 / 猜數字遊戲 / 列印九九表 / 列印三角形圖案 / 猴子吃桃 / 百錢百雞

Day05 - 構造程式邏輯

基礎練習 - 水仙花數 / 完美數 / 五人分魚 / Fibonacci數列 / 迴文素數
綜合練習 - Craps賭博遊戲

Day06 - 函式和模組的使用

函式的作用 - 程式碼的壞味道 / 用函式封裝功能模組
定義函式 - def語句 / 函式名 / 引數列表 / return語句 / 呼叫自定義函式
呼叫函式 - Python內建函式 / 匯入模組和函式
函式的引數 - 預設引數 / 可變引數 / 關鍵字引數 / 命名關鍵字引數
函式的返回值 - 沒有返回值 / 返回單個值 / 返回多個值
作用域問題 - 區域性作用域 / 巢狀作用域 / 全域性作用域 / 內建作用域 / 和作用域相關的關鍵字
用模組管理函式 - 模組的概念 / 用自定義模組管理函式 / 命名衝突的時候會怎樣(同一個模組和不同的模組)

Day07 - 字串和常用資料結構

字串的使用 - 計算長度 / 下標運算 / 切片 / 常用方法
列表基本用法 - 定義列表 / 用下表訪問元素 / 下標越界 / 新增元素 / 刪除元素 / 修改元素 / 切片 / 迴圈遍歷
列表常用操作 - 連線 / 複製(複製元素和複製陣列) / 長度 / 排序 / 倒轉 / 查詢
生成列表 - 使用range建立數字列表 / 生成表示式 / 生成器
元組的使用 - 定義元組 / 使用元組中的值 / 修改元組變數 / 元組和列表轉換
集合基本用法 - 集合和列表的區別 / 建立集合 / 新增元素 / 刪除元素 / 清空
集合常用操作 - 交集 / 並集 / 差集 / 對稱差 / 子集 / 超集
字典的基本用法 - 字典的特點 / 建立字典 / 新增元素 / 刪除元素 / 取值 / 清空
字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
基礎練習 - 跑馬燈效果 / 列表找最大元素 / 統計考試成績的平均分 / Fibonacci數列 / 楊輝三角
綜合案例 - 雙色球選號 / 井字棋

Day08 - 物件導向程式設計基礎

類和物件 - 什麼是類 / 什麼是物件 / 物件導向其他相關概念
定義類 - 基本結構 / 屬性和方法 / 構造器 / 析構器 / str方法
使用物件 - 建立物件 / 給物件發訊息
物件導向的四大支柱 - 抽象 / 封裝 / 繼承 / 多型
基礎練習 - 定義學生類 / 定義時鐘類 / 定義圖形類 / 定義汽車類

Day09 - 物件導向進階

屬性 - 類屬性 / 例項屬性 / 屬性訪問器 / 屬性修改器 / 屬性刪除器 / 使用slots
類中的方法 - 例項方法 / 類方法 / 靜態方法
運算子過載 - add / sub / or /getitem / setitem / len / repr / gt / lt / le / ge / eq / ne / contains
類(的物件)之間的關係 - 關聯 / 繼承 / 依賴
繼承和多型 - 什麼是繼承 / 繼承的語法 / 呼叫父類方法 / 方法重寫 / 型別判定 / 多重繼承 / 菱形繼承(鑽石繼承)和C3演算法
綜合案例 - 工資結算系統 / 圖書自動折扣系統 / 自定義分數類

Day10 - 圖形使用者介面和遊戲開發

使用tkinter開發GUI
使用pygame三方庫開發遊戲應用
“大球吃小球”遊戲

Day11 - 檔案和異常

讀檔案 - 讀取整個檔案 / 逐行讀取 / 檔案路徑
寫檔案 - 覆蓋寫入 / 追加寫入 / 文字檔案 / 二進位制檔案
異常處理 - 異常機制的重要性 / try-except程式碼塊 / else程式碼塊 / finally程式碼塊 / 內建異常型別 / 異常棧 / raise語句
資料持久化 - CSV檔案概述 / csv模組的應用 / JSON資料格式 / json模組的應用

Day12 - 字串和正規表示式

字串高階操作 - 轉義字元 / 原始字串 / 多行字串 / in和 not in運算子 / is開頭的方法 / join和split方法 / strip相關方法 / pyperclip模組 / 不變字串和可變字串 / StringIO的使用
正規表示式入門 - 正規表示式的作用 / 元字元 / 轉義 / 量詞 / 分組 / 零寬斷言 /貪婪匹配與惰性匹配懶惰 / 使用re模組實現正規表示式操作(匹配、搜尋、替換、捕獲)
使用正規表示式 - re模組 / compile函式 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法
應用案例 - 使用正規表示式驗證輸入的字串

Day13 - 程式和執行緒

程式和執行緒的概念 - 什麼是程式 / 什麼是執行緒 / 多執行緒的應用場景
使用程式 - fork函式 / multiprocessing模組 / 程式池 / 程式間通訊
使用執行緒 - thread模組 / threading模組 / Thread類 / Lock類 / Condition類 / 執行緒池

Day14 - 網路程式設計入門和網路應用開發

計算機網路基礎 - 計算機網路發展史 / “TCP-IP”模型 / IP地址 / 埠 / 協議 / 其他相關概念
網路應用模式 - “客戶端-伺服器”模式 / “瀏覽器-伺服器”模式
基於HTTP協議訪問網路資源 - 網路API概述 / 訪問URL / requests模組 / 解析JSON格式資料
Python網路程式設計 - 套接字的概念 / socket模組 / socket函式 / 建立TCP伺服器 / 建立TCP客戶端 / 建立UDP伺服器 / 建立UDP客戶端 / SocketServer模組
電子郵件 - SMTP協議 / POP3協議 / IMAP協議 / smtplib模組 / poplib模組 / imaplib模組
簡訊服務 - 呼叫簡訊服務閘道器

Day15 - 影像和文件處理

用Pillow處理圖片 - 圖片讀寫 / 圖片合成 / 幾何變換 / 色彩轉換 / 濾鏡效果
讀寫Word文件 - 文字內容的處理 / 段落 / 頁首和頁尾 / 樣式的處理
讀寫Excel檔案 - xlrd模組 / xlwt模組
生成PDF檔案 - pypdf2模組 / reportlab模組

Day16~Day20 - Python語言進階

常用資料結構
函式的高階用法 - “一等公民” / 高階函式 / Lambda函式 / 作用域和閉包 / 裝飾器
物件導向高階知識 - “三大支柱” / 類與類之間的關係 / 垃圾回收 / 魔術屬性和方法 / 混入 / 元類 / 物件導向設計原則 / GoF設計模式
迭代器和生成器 - 相關魔術方法 / 建立生成器的兩種方式 /
併發和非同步程式設計 - 多執行緒 / 多程式 / 非同步IO / async和await

Day21~30 - Web前端入門

用HTML標籤承載頁面內容
用CSS渲染頁面
用JavaScript處理互動式行為
jQuery入門和提高
Vue.js入門
Element的使用
Bootstrap的使用

Day31~35 - 玩轉Linux作業系統

作業系統發展史和Linux概述
Linux基礎命令
Linux中的實用程式
Linux的檔案系統
Vim編輯器的應用
環境變數和Shell程式設計
軟體的安裝和服務的配置
網路訪問和管理
其他相關內容

Day36~40 - 資料庫基礎和進階

關係型資料庫MySQL
關係型資料庫概述
MySQL的安裝和使用
SQL的使用
DDL - 資料定義語言 - create / drop / alter
DML - 資料操作語言 - insert / delete / update / select
DCL - 資料控制語言 - grant / revoke
相關知識
正規化理論 - 設計二維表的指導思想
資料完整性
資料一致性
在Python中操作MySQL
NoSQL入門
NoSQL概述
Redis概述
Mongo概述

Day41~55 - 實戰Django

Day41 - 快速上手

Web應用工作原理和HTTP協議
Django框架概述
5分鐘快速上手
使用檢視模板

Day42 - 深入模型

關係型資料庫配置
管理後臺的使用
使用ORM完成對模型的CRUD操作
Django模型最佳實踐
模型定義參考

Day43 - 靜態資源和Ajax請求

載入靜態資源
用Ajax請求獲取資料

Day44 - 表單的應用

表單和表單控制元件
跨站請求偽造和CSRF令牌
Form和ModelForm
表單驗證

Day45 - Cookie和Session

實現使用者跟蹤
cookie和session的關係
Django框架對session的支援
檢視函式中的cookie讀寫操作

Day46 - 報表和日誌

通過HttpResponse修改響應頭
使用StreamingHttpResponse處理大檔案
使用xlwt生成Excel報表
使用reportlab生成PDF報表
使用ECharts生成前端圖表
配置日誌和Django-Debug-Toolbar

Day47 - 中介軟體的應用

什麼是中介軟體
Django框架內建的中介軟體
自定義中介軟體及其應用場景

Day48 - 前後端分離開發入門

返回JSON格式的資料
用Vue.js渲染頁面

Day49 - RESTful架構和DRF入門 Day50 - RESTful架構和DRF進階 Day51 - 使用快取

網站優化第一定律
在Django專案中使用Redis提供快取服務
在檢視函式中讀寫快取
使用裝飾器實現頁面快取
為資料介面提供快取服務

Day52 - 檔案上傳和富文字編輯

檔案上傳表單控制元件和圖片檔案預覽
伺服器端如何處理上傳的檔案
富文字編輯器概述
wangEditor的使用

Day53 - 簡訊和郵件

常用簡訊閘道器平臺介紹
使用螺絲帽傳送簡訊
Django框架對郵件服務的支援

Day54 - 非同步任務和定時任務

網站優化第二定律
配置訊息佇列服務
在專案中使用celery實現任務非同步化
在專案中使用celery實現定時任務

Day55 - 單元測試和專案上線

Python中的單元測試
Django框架對單元測試的支援
使用版本控制系統
配置和使用uWSGI
動靜分離和Nginx配置
配置HTTPS

Day56~60 - 實戰Flask

Day56 - Flask入門 Day57 - 模板的使用 Day58 - 表單的處理 Day59 - 資料庫操作 Day60 - 專案實戰

Day61~65 - 實戰Tornado

Day61 - 預備知識

併發程式設計
I/O模式和事件驅動

Day62 - Tornado入門

Tornado概述
5分鐘上手Tornado
路由解析
請求處理器

Day63 - 非同步化

aiomysql和aioredis的使用

Day64 - WebSocket的應用

WebSocket簡介
WebSocket伺服器端程式設計
WebSocket客戶端程式設計
專案:Web聊天室

Day65 - 專案實戰

前後端分離開發和介面文件的撰寫
使用Vue.js實現前端渲染
使用ECharts實現報表功能
使用WebSocket實現推送服務

Day66~75 - 爬蟲開發

Day66 - 網路爬蟲和相關工具

網路爬蟲的概念及其應用領域
網路爬蟲的合法性探討
開發網路爬蟲的相關工具
一個爬蟲程式的構成

Day67 - 資料採集和解析

資料採集的標準和三方庫
頁面解析的三種方式:正規表示式解析 / XPath解析 / CSS選擇器解析

Day68 - 儲存資料

如何儲存海量資料
實現資料的快取
多執行緒和多程式
非同步I/O和協程
async和await關鍵字的使用
三方庫aiohttp的應用

Day70 - 解析動態內容

JavaScript逆向工程
使用Selenium獲取動態內容

Day71 - 表單互動和驗證碼處理

自動提交表單
Cookie池的應用
驗證碼處理

Day72 - Scrapy入門

Scrapy爬蟲框架概述
安裝和使用Scrapy

Day73 - Scrapy高階應用

Spider的用法
中介軟體的應用:下載中介軟體 / 蜘蛛中介軟體
Scrapy對接Selenium抓取動態內容
Scrapy部署到Docker

Day74 - Scrapy分散式實現

分散式爬蟲的原理
Scrapy分散式實現
使用Scrapyd實現分散式部署

Day75 - 爬蟲專案實戰

爬取招聘網站資料
爬取房地產行業資料
爬取二手車交易平臺資料

Day76~90 - 資料處理和機器學習

Day76 - 機器學習基礎

Day77 - Pandas的應用

Day78 - NumPy和SciPy的應用

Day79 - Matplotlib和資料視覺化

Day80 - k最近鄰(KNN)分類

Day81 - 決策樹

Day82 - 貝葉斯分類

Day83 - 支援向量機(SVM)

Day84 - K-均值聚類

Day85 - 迴歸分析

Day86 - 大資料分析入門

Day87 - 大資料分析進階

Day88 - Tensorflow入門

Day89 - Tensorflow實戰

Day90 - 推薦系統

Day91~100 - 團隊專案開發

第91天:團隊專案開發準備

軟體過程模型
經典過程模型(瀑布模型)
可行性分析(研究做還是不做),輸出《可行性分析報告》。
需求分析(研究做什麼),輸出《需求規格說明書》和產品介面原型圖。
概要設計和詳細設計,輸出概念模型圖、物理模型圖、類圖、時序圖等。
編碼 / 測試。
上線 / 維護。
敏捷開發(Scrum)- 產品所有者、Scrum Master、研發人員 - Sprint
產品的Backlog(使用者故事、產品原型)。
計劃會議(評估和預算)。
日常開發(站立會議、番茄工作法、結對程式設計、測試先行、程式碼重構……)。
修復bug(問題描述、重現步驟、測試人員、被指派人)。
評審會議(Showcase)。
回顧會議(當前週期做得好和不好的地方)。
補充:敏捷軟體開發宣言
個體和互動 高於 流程和工具
工作的軟體 高於 詳盡的文件
客戶合作 高於 合同談判
響應變化 高於 遵循計劃

就業推薦

包裝簡歷

簡歷的重要性就不言而喻了,怎麼樣寫好簡歷是個技術活,當然如果你有很好的背景(學校或者公司),那麼不管你怎麼寫,基本上都不刷掉你,但像我這樣轉行來的,簡歷的包裝就顯得尤為重要了,老師幫我指導的簡歷作為例子,大概有以下幾個部分:

個人資訊:姓名、出生日期、教育背景、部落格地址、github地址、聯絡方式(手機、郵箱和微訊號)

工作經歷:畢業後待過哪些公司,一般是倒序,專案儘量精簡明瞭,可以參考SMART原則老師幫我工作經歷還有專案經驗做了一些簡單的包裝。

專業技能:自己熟悉的一些技能,這個為什麼我寫到最後,因為對於工作三年的同學來說,面試官更加註重的是你的專案經歷,大部分面試都是看你的專案經歷來提問。

怎樣寫簡歷,這個開源網站不錯,教你怎麼寫簡歷,而且有一個線上markdown線上網站,可以匯出pdf

接下來老師幫我內推了幾家合作企業,投遞完簡歷後,有家面試的公司令我印象挺深刻的。那時候技術面得差不多了,對面的HR問了我一個問題:為什麼選擇我們這家公司呢? 我當時沒預料這個問題,就直言道:沒有太大的原因,就是前同事給我內推的,我想進來看看。我估摸當時的HR都懵逼了,以至於後面給我又加了一輪面試,不過最後我還是掛了。

「人不能太老實」這個道理我應該早就明白,但往往是遇到挫折的時候才會記憶更加深刻。

更後來的面試大多都還蠻順利的,面了一輪之後我選擇了一家生活與工作平衡的公司開始了我的網際網路搬磚之路。

面試方面,憑我們掌握的技術架構,大膽去聊就可以了,如果有工作過,大家就會知道,每個人平時也只深刻了解他做的那部分。而我們,專案可以從頭說到尾,技術可以從老說到新,理論都是老師們總結的精華。實在不行,公司千千萬,又怕啥呢?

學習資源

配套學習視訊
在這裡插入圖片描述

python實戰專案

在這裡插入圖片描述這份完整版的Python全套學習資料已經上傳CSDN,朋友們如果需要可以微信掃描下方CSDN官方認證二維碼【免費獲取】

在這裡插入圖片描述

總結

這幾年大家抱怨的最多的一個詞就是卷,覺得競爭太激烈太累了,但是這是一種規律,改變不了。

與其搬弄口舌抱怨一通,倒不如靜下心來好好學點東西。畢竟抱怨不會讓你變得更強,但學習會,你們說呢?
在這裡插入圖片描述

相關文章