㈠ iOS開發面試拿offer攻略之數據結構與演算法篇附加安全加密
集合結構 線性結構 樹形結構 圖形結構
1.1、集合結構 說白了就是一個集合,就是一個圓圈中有很多個元素,元素與元素之間沒有任何關系 這個很簡單
1.2、線性結構 說白了就是一個條線上站著很多個人。 這條線不一定是直的。也可以是彎的。也可以是值的 相當於一條線被分成了好幾段的樣子 (發揮你的想像力)。 線性結構是一對一的關系
1.3、樹形結構 說白了 做開發的肯定或多或少的知道 xml 解析 樹形結構跟他非常類似。也可以想像成一個金字塔。樹形結構是一對多的關系
1.4、圖形結構 這個就比較復雜了。他呢 無窮。無邊 無向(沒有方向)圖形機構 你可以理解為多對多 類似於我們人的交集關系
數據結構的存儲
數據結構的存儲一般常用的有兩種 順序存儲結構 和 鏈式存儲結構
2.1 順序存儲結構
發揮想像力啊。 舉個列子。數組。1-2-3-4-5-6-7-8-9-10。這個就是一個順序存儲結構 ,存儲是按順序的 舉例說明啊。 棧,做開發的都熟悉。棧是先進後出 ,後進先出的形式 對不對 ?
他的你可以這樣理解, hello world 在棧裡面從棧底到棧頂的邏輯依次為 h-e-l-l-o-w-o-r-l-d 這就是順序存儲,再比如隊列 ,隊列是先進先出的對吧,從頭到尾 h-e-l-l-o-w-o-r-l-d 就是這樣排對的
2.2 鏈式存儲結構
再次發揮想像力 這個稍微復雜一點 這個圖片我一直弄好 ,回頭找美工問問,再貼上 例如 還是一個數組 1-2-3-4-5-6-7-8-9-10 鏈式存儲就不一樣了 1(地址)-2(地址)-7(地址)-4(地址)-5(地址)-9(地址)-8(地址)-3(地址)-6(地址)-10(地址)。每個數字後面跟著一個地址 而且存儲形式不再是順序 ,也就說順序亂了,1(地址) 1 後面跟著的這個地址指向的是 2,2 後面的地址指向的是 3,3 後面的地址指向是誰你應該清楚了吧。他執行的時候是 1(地址)-2(地址)-3(地址)-4(地址)-5(地址)-6(地址)-7(地址)-8(地址)-9(地址)-10(地址),但是存儲的時候就是完全隨機的。明白了?
單向鏈表雙向鏈表循環鏈表
還是舉例子。理解最重要。不要去死記硬背 哪些什麼。定義啊。邏輯啊。理解才是最重要滴
3.1 單向鏈表
A->B->C->D->E->F->G->H . 這就是單向鏈表 H 是頭 A 是尾 像一個只有一個頭的火車一樣 只能一個頭拉著跑
3.2 雙向鏈表
數組和鏈表區別:
數組:數組元素在內存上連續存放,可以通過下標查找元素;插入、刪除需要移動大量元素,比較適用元素很少變化的情況
鏈表:鏈表中的元素在內存中不是順序存儲的,查找慢,插入、刪除只需要對元素指針重新賦值,效率高
3.3 循環鏈表
循環鏈表是與單向鏈表一樣,是一種鏈式的存儲結構,所不同的是,循環鏈表的最後一個結點的指針是指向該循環鏈表的第一個結點或者表頭結點,從而構成一個環形的鏈。發揮想像力 A->B->C->D->E->F->G->H->A . 繞成一個圈。就像蛇吃自己的這就是循環 不需要去死記硬背哪些理論知識。
二叉樹/平衡二叉樹
4.1 什麼是二叉樹
樹形結構下,兩個節點以內 都稱之為二叉樹 不存在大於 2 的節點 分為左子樹 右子樹 有順序 不能顛倒 ,懵逼了吧,你肯定會想這是什麼玩意,什麼左子樹右子樹 ,都什麼跟什麼鬼? 現在我以普通話再講一遍,你把二叉樹看成一個人 ,人的頭呢就是樹的根 ,左子樹就是左手,右子樹就是右手,左右手可以都沒有(殘疾嘛,聲明一下,絕非歧視殘疾朋友,勿怪,勿怪就是舉個例子, I am very sorry ) , 左右手呢可以有一個,就是不能顛倒。這樣講應該明白了吧
二叉樹有五種表現形式
1.空的樹(沒有節點)可以理解為什麼都沒 像空氣一樣
2.只有根節點。 (理解一個人只有一個頭 其他的什麼都沒,說的有點恐怖)
3.只有左子樹 (一個頭 一個左手 感覺越來越寫不下去了)
4.只有右子樹
5.左右子樹都有
二叉樹可以轉換成森林 樹也可以轉換成二叉樹。這里就不介紹了 你做項目絕對用不到數據結構大致介紹這么多吧。理解為主, 別死記,死記沒什麼用
1、不用中間變數,用兩種方法交換 A 和 B 的值
2、****求最大公約數
3、模擬棧操作
棧是一種數據結構,特點:先進後出 -
練習:使用全局變數模擬棧的操作
#include <stdio.h>
#include <stdbool.h>
#include <assert.h>
//保護全局變數:在全局變數前加 static 後,這個全局變數就只能在本文件中使用 static int data[1024] ;//棧最多能保存 1024 個數據
static int count = 0 ;//目前已經放了多少個數(相當於棧頂位置)
4、排序演算法
選擇排序、冒泡排序、插入排序三種排序演算法可以總結為如下:
都將數組分為已排序部分和未排序部分。
1.選擇排序將已排序部分定義在左端,然後選擇未排序部分的最小元素和未排序部分的第一個元素交換。
2.冒泡排序將已排序部分定義在右端,在遍歷未排序部分的過程執行交換,將最大元素交換到最右端。
3.插入排序將已排序部分定義在左端,將未排序部分元的第一個元素插入到已排序部分合適的位置。
4.1、選擇排序
【選擇排序】:最值出現在起始端
第 1 趟:在 n 個數中找到最小(大)數與第一個數交換位置
第 2 趟:在剩下 n-1 個數中找到最小(大)數與第二個數交換位置
重復這樣的操作...依次與第三個、第四個...數交換位置
第 n-1 趟,最終可實現數據的升序(降序)排列。
4.2、冒泡排序
【冒泡排序】:相鄰元素兩兩比較,比較完一趟,最值出現在末尾
第 1 趟:依次比較相鄰的兩個數,不斷交換(小數放前,大數放後)逐個推進,最值最後出現在第 n 個元素位置
第 2 趟:依次比較相鄰的兩個數,不斷交換(小數放前,大數放後)逐個推進,最值最後出現在第 n-1 個元素位置
…… ……
第 n-1 趟:依次比較相鄰的兩個數,不斷交換(小數放前,大數放後)逐個推進,最值最後出現在第 2 個元素位置
5、折半查找(二分查找)
折半查找:優化查找時間(不用遍歷全部數據) 折半查找的原理:
1.數組必須是有序的
2.必須已知 min 和 max (知道範圍)
// 已知一個有序數組, 和一個 key , 要求從數組中找到 key 對應的索引位置
字元串反轉
給定字元串 " hello,world ",實現將其反轉。輸出結果: dlrow , olleh
序數組合並
將有序數組 {1,4,6,7,9} 和 {2,3,5,6,8,9,10,11,12} 合並為{1,2,3,4,5,6,6,7,8,9,9,10,11,12}
HASH 演算法
哈希表
例:給定值是字母 a ,對應 ASCII 碼值是 97,數組索引下標為 97。
這里的 ASCII 碼,就算是一種哈希函數,存儲和查找都通過該函數,有效地提高查找效率。
在一個字元串中找到第一個只出現一次的字元。如輸入" abaccdeff ",輸出' b '字元( char )是一個長度為 8 的數據類型,因此總共有 256 種可能。每個字母根據其 ASCII 碼值作為數組下標對應數組種的一個數字。數組中存儲的是每個字元出現的次數。
查找兩個子視圖的共同父視圖
思路:分別記錄兩個子視圖的所有父視圖並保存到數組中,然後倒序尋找,直至找到第一個不一樣的父視圖。
求無序數組中的中位數
中位數:當數組個數 n 為奇數時,為 (n + 1)/2 ,即是最中間那個數字;當 n 為偶數時,為 (n/2 + (n/2 + 1))/2 , 即是中間兩個數字的平均數。
首先要先去了解一些幾種排序演算法: iOS 排序演算法
思路:
1.排序演算法+中位數
首先用冒泡排序、快速排序、堆排序、希爾排序等排序演算法將所給數組排序,然後取出其中位數即可。
2.利用快排思想
1、簡述 SSL 加密的過程用了哪些加密方法,為何這么作?
SSL 加密的過程之前有些過,此處不再贅述。
SSL 加密,在過程中實際使用了 對稱加密 和 非對稱加密 的結合。
主要的考慮是先使用 非對稱加密 進行連接,這樣做是為了避免中間人攻擊秘鑰被劫持,但是 非對稱加密的效率比較低。所以一旦建立了安全的連接之後,就可以使用輕量的 對稱加密。
2、RSA 非對稱加密
對稱加密[演算法]在加密和解密時使用的是同一個秘鑰;而[非對稱加密演算法]需要兩個[密鑰]來進行加密和解密,這兩個秘鑰是[公開密鑰]( public key ,簡稱公鑰)和私有密鑰( private key ,簡稱私鑰)。
RSA 加密
與對稱加密[演算法]不同,[非對稱加密演算法]需要兩個[密鑰]:[公開密鑰]( publickey )和私有密鑰( privatekey )。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的[密鑰],所以這種演算法叫作[非對稱加密演算法]。
RSA**** 加密原理
RSA 是常用的加密模式,其加密原理可用以下的例子進行簡要的論述。
隨機取兩個質數
以上就是本篇所整理的,感謝觀看!
㈡ 面試經典數據結構和演算法匯總
如果說數據結構是骨架,那麼演算法就是靈魂。沒了骨架,靈魂沒有實體寄託;沒了靈魂,骨架也是個空殼。兩者相輔相成,缺一不可,在開發中起到了砥柱中流的作用。
現在我對各種數據結構和演算法做一總結,對比一下它們的效率
1.數據結構篇
1. 如果讓你手寫個棧和隊列,你還會寫嗎?
2. 開發了那麼多項目,你能自己手寫個健壯的鏈表出來嗎?
3. 下次面試若再被問到二叉樹,希望你能對答如流!
4. 面試還在被紅-黑樹虐?看完這篇輕松搞定面試官 !
2.排序演算法篇
1. 幾個經典的基礎排序演算法,你還記得嗎?
2. 手把手教你學會希爾排序,很簡單!
3. 快速排序演算法到底有多快?
4. 五分鍾教你學會歸並排序
5. 簡單說下二叉樹排序
6. 學會堆排序只需要幾分鍾
7. 圖,這個玩意兒竟然還可以用來排序!
掌握了這些經典的數據結構和演算法,面試啥的基本上沒什麼問題了,特別是對於那些應屆生來說。接下來再總結一下不同數據結構和演算法的效率問題,做一下對比,這也是面試官經常問的問題。
數據結構常用操作效率對比:
常用排序演算法效率的對比:
關於經典的數據結構和演算法,就總結到這,本文建議收藏,利用等公交、各種排隊之時提升自己。這世上天才很少,懶蛋卻很多,你若對得起時間,時間便對得起你。
㈢ 面試准備之【數據結構】1——圖
共有:鄰接表,鄰接矩陣
有向圖獨有:十字鏈表,邊集數組
無向圖獨有:鄰接多重表
一個一維數組存儲圖中頂點信息,一個二維數組(稱為鄰接矩陣)存儲圖中的邊或弧的信息。
設圖G有n個頂點,則鄰接矩陣是一個nxn的方陣,定義為:Arc[i][j]=1,若<vi,vj>∈E或<vi,vj>∈E,反之等於0。
可以看出,無向圖的鄰接矩陣是對稱矩陣,要想知道某個頂點的度,其實就是這個頂點vi在鄰接矩陣中第i行(或第i列)的元素之和。
在有向圖的鄰接矩陣中,某個頂點的出(入)度是這個頂點vi在鄰接矩陣中第i 行(列)的元素之和;
我們發現,當圖中的邊數相對於頂點較少時,鄰接矩陣是對存儲空間的極大浪費。我們可以考慮對邊或弧使用鏈式存儲的方式來避免空間浪費的問題。回憶樹結構的孩子表示法,將結點存入數組,並對結點的孩子進行鏈式存儲,不管有多少孩子,也不會存在空間浪費問題。
鄰接表的創建過程如下:
1) 圖中頂點用一個一維數組存儲,當然也可以用單鏈表來存儲,不過用數組可以較容易的讀取頂點信息,更加方便。另外,對於頂點數組中,每個數據元素還需要存儲指向第一個鄰接點的指針,以便於查找該頂點的邊信息。
2) 圖中每個頂點vi的所有鄰接點構成一個線性表,由於鄰接點的個數不定,所以用單鏈表存儲,無向圖稱為頂點vi的邊表,有向圖則稱為以vi為弧尾的出邊表。
從圖中我們知道,頂點表的各個結點由data和firstedge兩個域表示,data是數據域,存儲頂點的信息。
firstedge是指針域,指向邊表的第一個結點,即此頂點的第一個鄰接點。
邊表結點由adjvex和next兩個域組成。adjvex是鄰接點域,存儲某頂點的鄰接點在頂點表中的下標,next則存儲指
向邊表中下一個結點的指針,比如v1頂點與v0、v2互為鄰接點,則在v1的邊表中,adjvex分別為v0的0和v2的2.
如果想知道某個頂點的度,就去查找這個頂點的邊表中結點的各數。
若要判斷頂點vi和vj是否存在邊,只需要測試頂點vi的邊表adjvex中是否存在結點vj的下標就行了。
若求頂點的所有鄰接點,其實就是對此頂點的邊表進行遍歷,得到的adjvex域對應的頂點就是鄰接點。
有向圖的鄰接表中頂點vi的邊表是指以vi 為弧尾 的弧來存儲的,這樣很容易就可以得到每個頂點的出度。
有時為了便於確定頂點的入度或以頂點為弧頭的弧,可以建立一個有向圖的逆鄰接表,即對每個頂點vi都建立
一個鏈接為vi為弧頭的表。如下圖所示:
此時我們很容易就可以算出某個頂點的入度或出度是多少,判斷兩頂點是否存在弧也很容易實現。
對於帶權值的網圖,可以在邊表結點定義中再增加一個weight的數據域,存儲權值信息即可
對於有向圖來說,鄰接表是有缺陷的。關心了出度問題,想了解入度就必須要遍歷整個圖才能知道。反之,逆鄰接表解決了入度
卻不了解出度的情況。有沒有可能把鄰接表和逆鄰接表結合起來呢?
答案是肯定的,就是把它們整合在一起。這種存儲有向圖的方法是:十字鏈表(Orthogonal List).
我們重新定義頂點表結點結構為:
| data | firstin | firstout |
其中firstin表示入邊表頭指針,指向該頂點的入邊表中第一個結點,firstout表示出邊表頭指針,指向該頂點的出邊表中的第一個結點。
重新定義的 邊表 結點結構如下表:
| tailvex | headvex | headlink | taillink |
其中tailvex是指弧起點在頂點表的下標,headvex是指弧終點在頂點表中的下標,headlink是指入邊表指針域,指向終點(弧頭)相同的
下一條邊,taillink是指出邊表指針域,指向起點(弧尾)相同的下一條邊。如果是帶權值的網,還可以再增加一個weight域來存儲權值。
如下圖表示的十字鏈表:
頂點表依然是存入一個一維數組{v0,v1,v2,v3},以頂點v0來說,firstout指向的是出邊表中的第一個結點v3。所以v0邊表結點的headvex=3,
而tailvex其實就是當前頂點v0的下標0,由於v0隻有一個出邊頂點,所以headlink和taillink都是空。
這里虛線箭頭的含義,其實就是逆鄰接表的表示。對於v0來說,它有兩條入邊,分別來自頂點v1和v2。因此v0的firstin指向頂點v1的邊表
結點中headvex為0的結點,虛線(1),接著由入邊結點的headlink指向下一個入邊頂點v2,虛線(2)。
對於頂點v1,它有一個入邊頂點v2,2個出邊頂點v0和v2,所以它的firstin指向頂點v2的邊表結點中headvex為1的結點,虛線(3).
十字鏈表的好處就是因為把鄰接表和逆鄰接表整合在了一起,這樣既容易找到以vi為尾的弧,也容易找到以vi為頭的弧,因而容易求得
頂點的出度和入度。除了結構復雜一點外,其實創建圖演算法的時間復雜度和鄰接表是相同的,因此很好的應用在有向圖中。
十字鏈表主要是針對有向圖的存儲結構進行了優化,那麼對於無向圖的鄰接表,有沒有問題呢?如果我們在無向圖的應用中,關注的重點是頂點,那麼鄰接表是不錯的選擇,但如果我們更關注邊的操作,比如對已訪問過的邊做標記,刪除某一條邊等操作,那就意味著需要找到這條邊的兩個邊表結點進行操作。如下圖,若要刪除(v0,v2)這條邊,需要對鄰接表結構中右邊表的兩個結點進行刪除,顯然這是比較繁瑣的。
因此,我們也仿照十字鏈表的方式,對邊表結點的結構進行一些改造,重新定義的邊表結點結構如下表:
| ivex | ilink | jvex | jlink |
其中ivex和jvex是指某條邊依附的兩個頂點在頂點表中的下標。ilink指向依附頂點ivex的下一條邊,jlink指向依附頂點jvex的下一條邊。
這就是鄰接多重表結構。如上圖有4個頂點和5條邊,先將邊表結點畫出來。由於是無向圖,所以ivex,jvex正反過來都可以,為了繪圖
方便,都將ivex值設置的與一旁的頂點下標相同。
下面開始連線,首先連線的(1)(2)(3)(4)是將頂點的firstedge指向一條邊,頂點下標要與ivex的值相同。接著,由於頂點v0的(v0,v1)邊的
鄰邊有(v0,v3)和(v0,v2)。因此(5)(6)的連線就是滿足指向下一條依附於頂點v0的邊的目標,注意ilink指向的結點的jvex(ivex)一定要與它本身
的jvex(ivex)的值相同。同理,連線(7)就是指(v1,v0)這條邊,它是相當於頂點v1指向(v1,v2)邊後的下一條。v2有三條邊依附,所以(3)之後就有
了(8)(9)。連線(10)就是頂點v3在連線(4)之後的下一條邊。左圖一共有5條邊,所以右圖有10條連線,完全符合預期。
鄰接多重表與鄰接表的差別, 僅僅是在於同一條邊在鄰接表中用兩個邊表結點表示,而在鄰接多重表中只有一個結點 。這樣對邊的操作就方便
多了,若要刪除左圖的(v0,v2)這條邊,只需要將右圖的(6)(9)的鏈接指向改為^即可。
---- 邊集數組是由兩個一維數組構成。一個是存儲頂點的信息;另一個是存儲邊的信息,這個邊數組每個數據元素由一條邊的起點下標(begin)、終點下標(end)和權(weight)組成。
如上圖所示,邊集數組關注的是邊的集合,在邊集數組中要查找一個頂點的度需要掃描整個邊數組,效率並不高。因此它更適合對邊依次
進行處理的操作,而不適合對頂點相關的操作
路徑長度:路徑上各活動持續時間的總和(即路徑上所有權之和)。
完成工程的最短時間:從工程開始點(源點)到完成點(匯點)的最長路徑稱為完成工程的最短時間。
關鍵路徑:路徑長度最長的路徑稱為關鍵路徑。
二分圖是一類特殊的圖,又稱為雙分圖、二部圖、偶圖。二分圖的頂點可以分成兩個互斥的獨立集 U 和 V 的圖,使得所有邊都是連結一個 U 中的點和一個 V 中的點。頂點集 U、V 被稱為是圖的兩個部分。等價的,二分圖可以被定義成圖中所有的環都有偶數個頂點。可以將 U 和 V 當做一個著色:U 中所有頂點為藍色,V 中所有頂點著綠色,每條邊的兩個端點的顏色不同,符合圖著色問題的要求。相反的,非二分圖無法被二著色
完全二分圖 是一種特殊的二分圖,可以把圖中的頂點分成兩個集合,使得第一個集合中的所有頂點都與第二個集合中的所有頂點相連。
歐拉圖是指通過圖(無向圖或有向圖)中所有邊且每邊僅通過一次通路,相應的迴路稱為歐拉迴路。具有歐拉迴路的圖稱為歐拉圖(Euler Graph),具有歐拉通路而無歐拉迴路的圖稱為半歐拉圖。歐拉證明了如下定理: 一個非空連通圖是歐拉圖當且僅當它的每個頂點的度數都是偶數。 由此可得如下結論:一個連通圖有歐拉跡當它至多有兩個度數是奇數的頂點。
AOE網Activity On Edge Network:在現代化管理中,人們常用有向圖來描述和分析一項工程的計劃和實施過程,一個工程常被分為多個小的子工程,這些子工程被稱為活動(Activity),在帶權有向圖中若以頂點表示事件,有向邊表示活動,邊上的權值表示該活動持續的時間,這樣的圖簡稱為AOE網。
圖的存儲結構-鄰接助陣和鄰接表 https://blog.csdn.net/dongyanxia1000/article/details/53582186
圖的存儲結構-十字鏈表和鄰接多重表 https://blog.csdn.net/dongyanxia1000/article/details/53584496
㈣ 大廠數據分析面試題,大數據結構化面試
作為程序員,你認為代碼只要實現功能就可以了嗎?
其實,工作2~3年後,你會陪蠢發現隨著工作的深入,工作中遇到的問題會變大,處理的數據量也會變大。
一開始,我可能會耐心加班,等機器處理好了再回家,但最後,處理完這些數據通常是在深夜。
面對這樣的問題,其實可以用數據結構解決。 仔細整理開發中遇到的問題,會發現很多工作中的問題,用簡單的邏輯就能解決。
舉個例子,你很熟悉。 如何實時統計99%的業務介面響應時間?
您可能會首先想到,每次查詢時,都會按照從小到大的順序對所有響應時間進行排序。 如果總共有1200個數據,第1188個數據將有99%的響應時間。
很明顯,每次用這種方法查詢都要排序,效率非常低。
但是,如果知道「堆」數據結構,兩個堆就可以非常有效地解決這個問題。
因此,數據結構是提高我們程序員工作效率的利器!
另外,已經工作了2到3年的你,可能想跳槽進入大工廠。
但是,當你去面試時,你經常會碰到數據結構和演算法的主題。
目前,數據結構和演算法是許多知名企業面試的必考問題。
國內外各大互聯網公司在面試過程中,都多少聽說了一些有關數據結構和演算法的主題。
而且,規模越大的公司,越重視數據結構和演算法。
例如,2019年6月,阿裡面試中涉及的數據結構主題:
2019年華為面試涉及的數據結構主題:
目前,許多中小企業的面試問題都涉瞎盯及數據結構知識。
其實,你會發現,即使是大小公司,為了篩選更優秀的人磨亂和才,面試問題的難度也會越來越大。
因此,數據結構是進入大廠的重要門檻。
總之,如果你想提高工作效率,進入更大的公司,數據結構和演算法是你必須跨越的一道坎。
從易傳傳媒、亞信、奧鵬教育、程序員到架構師再到技術經理樊延欣老師,前後六年通過各種工作方式打好數據結構基礎,在過程中梳理了許多心得,進行了深入思考。
和樊延欣老師一起,死戰數據結構,跳過代碼陷阱,盡快完成數據結構通關,有機會升職更好。
掃描堆場上的二維碼,點擊組,立即搶購
原價69元,限時優惠49元
老師怎麼解釋這門課?#
老師介紹枯燥抽象的結構規則用詳細的方法映射到實際項目中。 然後盡量脫離復雜的數學基礎,在許多常見的應用場合映射相關理論,降低學習者的理解門檻,使其零基礎也能學習。
同時,該課程至少涵蓋了50%常見互聯網公司中數據結構方面的面試問題綱領,序列和棧是基礎性主題,樹是更高級的主題,可以理解和把握,發揮面試信心,更上一層樓
#課程介紹#
#我能得到什麼? #
1、提高編程效率和質量
熟悉數據結構原理,復雜的項目無需為需求實現原理而煩惱。
2、優化能力提升
隨著了解的加深,能夠發現與工作中數據結構特性相違背的代碼,並具有優化修改的能力。
3、提高面試成功率
學習50%以上互聯網公司數據結構的面試問題綱領,提高面試合格率。
#使用者群組#
1、開發業務系統2年,有相關項目經驗,不斷重復製作業務車輪希望提高的程序員。
有2、3~5年開發經驗,但基礎不牢固,想改變體系結構的程序員。
3、基礎扎實,需要大量用例和思考才能鞏固基礎的優秀畢業生/在校生。
#新課初優惠#
限時49元
(成本69 )。
每百人加價十元
第26節課,平均每課2元,持續一個月,改變報關大廠面試機會
享受七折的折扣
自考/成考有疑問、不知道自考/成考考點內容、不清楚當地自考/成考政策,點擊底部咨詢官網老師,免費領取復習資料:https://www.87dh.com/xl/