【技术+某度面经】Jenkins 内容+百度面经分享
后臺可回復(fù)【1024】即可獲取相關(guān)寶藏內(nèi)容分享?:)
?
?
Q1: Jenkins是什么??
?
A:Jenkins是一款開源 CI&CD 軟件,用于自動化各種任務(wù),包括構(gòu)建、測試和部署軟件。
?
?
?
今天文章分為兩部分 :)
PART1?Jenkins技術(shù)分享 /?PART2 關(guān)于百度一面雜談
?
? ?
?
5 Minutes?to Jenkins:
PART 1 創(chuàng)建您的Pipline
?
學(xué)長五分鐘帶你走進(jìn)Jenkins大世界? :)
?
首先什么是 Jenkins Pipeline?
Jenkins Pipeline(或簡稱為 "Pipeline")是一套插件,將持續(xù)交付的實現(xiàn)和實施集成到 Jenkins 中。持續(xù)交付 Pipeline 自動化的表達(dá)了這樣一種流程:將基于版本控制管理的軟件持續(xù)的交付到您的用戶和消費者手中。
?
Jenkins Pipeline 提供了一套可擴(kuò)展的工具,用于將“簡單到復(fù)雜”的交付流程實現(xiàn)為“持續(xù)交付即代碼”。Jenkins Pipeline 的定義通常被寫入到一個文本文件(稱為?Jenkinsfile?)中,該文件可以被放入項目的源代碼控制庫中。他其實也有自己的語言邏輯,后面學(xué)長也有整理他的語法使用。
?
快速開始使用 Pipeline:
?
將以下示例?復(fù)制到您的倉庫中并命名為?Jenkinsfile
單擊Jenkins中的?New Item?菜單?
為您的新工程起一個名字 (例如?My Pipeline) ,選擇?Multibranch Pipeline
單擊?Add Source?按鈕,選擇您想要使用的倉庫類型并填寫詳細(xì)信息.
單擊?Save?按鈕,觀察您的第一個Pipeline運行!
您可能需要修改?Jenkinsfile?以便應(yīng)用在您自己的項目中。嘗試修改?sh?命令,使其與您本地運行的命令相同。
這里說說pipline?使用語法分兩種聲明式和腳本式,
這里僅分享聲明式
Declarative Pipeline(聲明式)核心概念
核心概念用來組織pipeline的運行流程
1.pipeline?:聲明其內(nèi)容為一個聲明式的pipeline腳本
2.agent:執(zhí)行節(jié)點(job運行的slave或者master節(jié)點)
3.stages:階段集合,包裹所有的階段(例如:打包,部署等各個階段)
4.stage:階段,被stages包裹,一個stages可以有多個stage
5.steps:步驟,為每個階段的最小執(zhí)行單元,被stage包裹
6.post:執(zhí)行構(gòu)建后的操作
根據(jù)構(gòu)建結(jié)果來執(zhí)行對應(yīng)的操作根據(jù)上面幾個概念就能夠輕易的創(chuàng)建一個簡單的pipeline
?
pipeline{agent anystages{stage("first stage"){steps("first steps"){echo "this is first step"}}}post{always{echo "this is ending..."}} }下面針對幾個核心概念,逐一進(jìn)行說明
1.pipeline
作用域:應(yīng)用于全局最外層,表明該腳本為聲明式pipeline
是否必須:必須
參數(shù):無
2.agent
作用域:可用在全局與stage內(nèi)
是否必須:是,
參數(shù):any,none, label, node,docker,dockerfile
?
pipeline{agent any //全局必須帶有agent表明此pipeline執(zhí)行節(jié)點stages{stage("first stage"){agent { label 'master' } //具體執(zhí)行的步驟節(jié)點,非必須steps{echo "this is first step"}}}}參數(shù)示例:
?
//運行在任意的可用節(jié)點上agent any//全局不指定運行節(jié)點,由各自stage來決定agent none//運行在指定標(biāo)簽的機(jī)器上,具體標(biāo)簽名稱由agent配置決定agent { label 'master' }//node參數(shù)可以擴(kuò)展節(jié)點信息agent { node {label 'master'customWorkspace 'xxx'} }//使用指定運行的容器agent { docker 'python' }3.stages
作用域:全局或者stage階段內(nèi),每個作用域內(nèi)只能使用一次
是否必須:全局必須
參數(shù):無
?
pipeline{agent anystages{stage("first stage"){stages{ //嵌套在stage里stage("inside"){steps{echo "inside"}}}}stage("stage2"){steps{echo "outside"}}}}看下運行結(jié)果,發(fā)現(xiàn)嵌套的stage也是能夠展現(xiàn)在視圖里面的
?
4.stage
作用域:被stages包裹,作用在自己的stage包裹范圍內(nèi)
是否必須:必須
參數(shù):需要一個string參數(shù),表示此階段的工作內(nèi)容
備注:stage內(nèi)部可以嵌套stages,內(nèi)部可單獨制定運行的agent
5.steps
作用域:被stage包裹,作用在stage內(nèi)部
是否必須:必須
參數(shù):無
6.post
作用域:作用在pipeline結(jié)束后者stage結(jié)束后
條件:always、changed、failure、success、unstable、aborted
在配置好 Pipeline 之后,Jenkins 會自動檢測您倉庫中創(chuàng)建的任何新的分支或合并請求, 并開始為它們運行 Pipelines。
?
關(guān)于并行執(zhí)行
通過將階段設(shè)置為parallel來表明該stage為并行運行,但是需要注意以下幾點
-
一個stage只能有一個steps或者parallel
-
嵌套的stages里不能使用parallel
-
parallel不能包含agent或者tools
-
通過設(shè)置failFast 為true表示:并行的job中如果其中的一個失敗,則終止其他并行的stage
?
pipeline {agent anystages {stage('Non-Parallel Stage') {steps {echo 'Non-parallel'}}stage('Parallel Stage') {agent anyfailFast trueparallel {stage('parallel 1') {agent anysteps {echo "parallel 1"}}stage('parallel 2') {steps {echo "parallel 2"}}}}} }腳本
在聲明式的pipeline中默認(rèn)無法使用腳本語法,但是pipeline提供了一個腳本環(huán)境入口:script{},通過使用script來包裹腳本語句,即可使用腳本語法
關(guān)于Jenkins的第一期的分享就到這里;
看到這里的同學(xué)有福啦,學(xué)長分享一波寶藏收藏資源
后臺可回復(fù)【數(shù)據(jù)庫】即可獲取相關(guān)內(nèi)容分享?:)
?
?
好!回歸每周的閑言碎語!
PART2 >今天來分享一下百度一面的內(nèi)容扒
分享僅供參考-
?
?
面試前的準(zhǔn)備:
其實學(xué)長面試的崗位屬于開發(fā)崗位,在此一周前我準(zhǔn)備了很多基礎(chǔ)知識內(nèi)容,因為我覺得一面的內(nèi)容會很基礎(chǔ),不會有太多的算法難題,就把基礎(chǔ)鞏固了些,每天的午飯時間會認(rèn)真的看一些b站同學(xué)的面試大廠的經(jīng)驗分享,內(nèi)容或多少些許幫助/其余上下班的路上會看很多的pdf基礎(chǔ)考點,畢竟面對大廠的學(xué)長還是會有些許方。
?
其實之所以能夠得到百度面試官的賞識是因為一點,我的項目經(jīng)驗有一個面試官覺得不錯,這個不錯的內(nèi)容是關(guān)于我現(xiàn)在負(fù)責(zé)的自動化測試平臺開發(fā)內(nèi)容,今天的分享內(nèi)容也是這個平臺在用的主要內(nèi)容,所以幸運的得到了百度的面試邀請,面試時間約在了周六十一點,我個人覺得時間并不是很好,因為飯點了面試官也會餓哈哈哈。
?
面試開始:
首先面試官直入主題,不需要我自我介紹,依我看來他是個技術(shù),因為程序員都很直接可能,我也是,我理解。不過學(xué)長還是在介紹項目的同時強(qiáng)行加入些許自我介紹到其中了,說到自己畢業(yè)時間以及接觸python的原因。我不想覺得面試把自我介紹省略掉,因為我準(zhǔn)備了,心里的介紹背都背熟了/
?
面試的內(nèi)容-我總結(jié)了較重要的五個問題:
時長-56min
問題1.
面試官欣賞的項目的介紹(具體介紹)因為畢竟他要真正的了解你這個項目到底有沒有包裝瞎扯,學(xué)長是真實的項目介紹,不過沒有過多透露商業(yè)內(nèi)容,遵守保密原則哈哈/
?
問題2.
項目如何搭建以及框架結(jié)構(gòu)使用到了哪些內(nèi)容。其實也就是他先了解一些,然后逐步進(jìn)入下一問題。
?
問題3.
將你這個項目的具體實現(xiàn)描述,最好言簡意賅。然后學(xué)長拿筆和紙在記錄我說的項目內(nèi)容,視頻面試一定要做好紙和筆記錄哦!強(qiáng)烈建議,備好🖊和📑這樣思路才清晰 將每一個模塊細(xì)化的說一說。這里我感覺說的時間很長。綜上三個問題,我甚至覺得我有些泄露商業(yè)秘密,隨便調(diào)侃了下自己簽了保密協(xié)議,哈哈面試官也笑著說并不會涉及透露商業(yè)機(jī)密,大可不必?fù)?dān)心,面試官小哥哥還是很nice的,面試到這里感覺卸下了所有防備,就像隨意聊天了,面試時候情緒帶動其實很重要的,禮儀以及細(xì)節(jié)等等,我覺得我做的并不會,有心的同學(xué)多多看看B站面經(jīng)視頻,或許對你我有所幫助。
?
問題4.
俱往矣,你做過的最完善的項目是哪一個?我回答的是之前的項目,因為我之前項目是一個產(chǎn)品化項目,現(xiàn)在的平臺雖然也在做產(chǎn)品化內(nèi)容了,但是還沒有具體落地完成/這個問題回答的感覺也還好,因為我其實并不太了解這個產(chǎn)品賣給誰 但我知道是toB模式的商業(yè)路線,盈利多少我哪里知道 ,但是不知道這里也要強(qiáng)行裝一下下。
?
問題5.
學(xué)習(xí)中那個技術(shù)讓你覺得最困難最值得講述??這問題我有點懵,我覺得都,都難,但我本能的想了一下DRF(DJANGO-restframwork)這個框架其實深入理解的確很難,需要自己去讀一些他的源碼內(nèi)容,因為默認(rèn)返回的很多都不能滿足后端或者前端的需求,總之熟悉一個框架你需要讀他的源碼,我認(rèn)為算是“難點”。就將“讀”DRF以及其他項目源碼內(nèi)容說了說,其中也講述了些自己學(xué)習(xí)了機(jī)器學(xué)習(xí)分類聚合以及深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),以及自己愛記錄自己學(xué)習(xí)遇到的難點到博客或者公眾號中。
?
最后分享下我第一輪面試完的感悟和技巧:
?
第一輪面試總的來說,并不會很難,也不會問你算法或者數(shù)據(jù)結(jié)構(gòu)或者造飛機(jī)的知識,問的很實際,問你項目具體內(nèi)容,很具體很具體的那種,還會根據(jù)面試的過程,通過你的項目介紹摻雜問你一些用到的技術(shù)棧,如果有新意有亮點,面試官一定會給你的面試結(jié)果填上不錯的一筆,同時會記錄你的面試過程,在過程中你會發(fā)現(xiàn)自己的不足,面試結(jié)束我來總結(jié)了Jenkins的使用,哈哈算是給自己補(bǔ)一補(bǔ)課,下次面試發(fā)揮更好吧。
?
或許很多人在等待面試的時候都是非常嚴(yán)肅而焦慮的等待著,這里告訴大家千萬別這樣,這樣只能增加你的緊張感,你要多和你身邊的人聊天,其實在前一周收到通知時候?qū)W長還是很激動的,甚至?xí)行┰S失眠,但是面試一結(jié)束還是如釋重負(fù)一般。生活是苦難的,我們還要迎著苦難而上才可以呀!加油!
?
希望分享的內(nèi)容對你我都有幫助
?
總結(jié)
以上是生活随笔為你收集整理的【技术+某度面经】Jenkins 内容+百度面经分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。