Ⅰ 軟體測試面試題有哪些
軟體測試面試前的最後一波惡補!不要打沒有準備的仗。
想要拿到心儀的offer,光有相應的技術水平是不夠的,還是要提前做好面試題的熟悉以及學習一些面試時的技巧,否則,就算是金子也很可能會被埋沒了。
下面給詳細講講一些面試中比較常見的題吧!
1、軟體測試的流程是什麼?
分析:每當hr問一個問題的時候,我們都必須在腦海里先想一下他是想通過這個問題獲取哪些信息,做好了這步先行工作再回答就比較穩健了。如果有工作經驗,那麼直接按照公司流程去答就可以了,如果你剛轉行或者是才實習,那就按下面的標准回答走就行了。
回答:項目經理將項目需求文檔給到開發,開發記錄文檔內需求不明確或者遺漏點做好准備,然後在需求評審會議上,各開發人員提出自己的疑問並解決,需求評審最終得到一份需求規格說明書。(需求評審階段)
評審通過後,開發這邊的經理就開始編寫開發計劃,測試經理編寫測試計劃,計劃評審通過後開發人員進行程序的開發,測試人員開始測試用例的編寫。當項目的第一個版本出來後,開發負責第二個版本的迭代,而測試這邊對項目進行測試並記錄追蹤管理bug,直到項目迭代完畢。(產品研發階段)
項目迭代完畢並修復大部分的bug後,測試這邊開始進行總結,最終產出一份測試報告書,記錄此次的測試工作及項目存在的問題。(產品發布階段)
2、測試用例主要有哪些元素?
分析:每家公司用的模板都不盡相同,所以內容也是多種多樣的,你只需要把基本的元素回答出來就行了。
回答:測試用例的主要元素有:ID、標題、模塊、預置條件、操作步驟、預期結果、實際結果、是否通過等等
3、軟體測試有什麼策略和階段?
分析:策略就是你是以什麼樣的思路去測試,或者是通過什麼樣的技術或者步驟去執行等等。
回答 :軟體測試的策略主要有:動態、靜態測試;白盒、黑盒測試。測試階段按照研發順序分別是:單元測試、集成測試、系統測試,有些公司還會有驗收測試;(單元測試開發在調試代碼時就完成,集成測試也是,但是有時測試人員也需要進行集成測試;測試人員平時主要的工作就是系統測試,驗收測試是客戶參與進行的測試);
4、測試用例是什麼?有什麼作用?
回答:測試用例實際上就是預設好一個特定的場景,讓軟體再這個場景中運行,以檢驗程序是否給出正確反應,來衡量軟體是否正確滿足了客戶需求。
作用:
1、避免盲目測試並提高測試效率;在軟體版本更新之後只需要少量修改即可開展測試工作,提高工作效率,大幅度縮短測試周期。
2、可以直觀看出哪些是測試重點,測試用例是測試工作的見證,可以看到測了哪些功能,又有哪些模塊沒有測。
3、測試用例是量化測試工作的方法之一。
5、你平時是怎麼設計測試用例的?
分析:這個問題的點主要考察是否掌握測試用例設計方法,在回答之後,HR可能會繼續追問某種設計方法的概念或者實例,這時舉例說明即可;如:等價類劃分法就是把程序的輸入域劃分成等價類,從每個部分中選取少數代表性數據當做測試數據。
回答:設計測試用例一般都會使用到等價類、邊界值、場景/流程法、因果圖還有錯誤推測法;
6、你們公司的需求評審是怎麼進行的?
分析:需求評審,就是對客戶需求,軟體各個模塊之間模糊的點進行審查,排除不理解或者沒有考慮到的點。
回答:需求評審,在一些分工比較明確的公司,都是由PD負責,需求確認好後再下發到開發和測試部門;分工不怎麼明確的公司可能就是開發測試產品等大家坐在一起共同探討;評審形式一般分為線上和線下兩種方式,負責人一般會提前把需求文檔下發到大家手上供大家整理各自的疑惑點,為後續的評審會議做准備。
7、還有什麼想要問我的嗎?
分析:這個問題在每個面試的尾聲都會被問到,如果你直接回答沒有,會讓hr有種你不在意這份工作的感覺,如果你問得多了又會顯得面試之前沒有做好充分的准備,所以問題一般控制在2-3個就差不多。
直接說沒有,會讓HR覺得你不關心這個崗位,問的多了又會顯得面試之前沒有做好充分的准備。所以問題一般控制在兩到三個比較好。
回答:
1、公司的研發團隊目前是什麼規模?開發和測試分別有多少人?
2、公司今後的業務方向是什麼?
3、如果我入職了,我的主要工作職責是什麼?
以上!
Ⅱ 程序員面試問題及答案
程序員面試問題及答案
程序員是從事程序開發、維護的專業人員。我整理的程序員面試問題及答案,希望大家喜歡!
1、兩柱香問題
題目:有兩柱不均勻的香,每柱香燃燒完需要1個小時,問:怎樣用兩柱香切出一個15分鍾的時間段?這個題的重點就是怎麼切。
解答:將甲香的一頭點著,將乙香的兩頭點著,當乙香燃燒完時,說明已經過了半個小時,同時也說明甲香也正好燃燒了一半,此時,將甲香的另一頭點著,從此時起到甲香完全燒完,正好15分鍾。
2、燈管問題
在房裡有三盞燈,房外有三個開關,在房外看不見房內的情況,你只能進門一次,你用什麼方法來區分那個開關控制那一盞燈?
解答:打開一盞燈10分鍾,關掉,打開第二盞,進去看看哪盞亮,摸摸哪盞熱,熱的是第一個打開的開關開的,亮的是第二個開關開的',另一個就是第三個。
3、兩位盲人問題
他們都各自買了兩對黑襪和兩對白襪,八對襪了的布質、大小完全相同,而每對襪了都有一張商標紙連著。兩位盲人不小心將八對襪了混在一起。 他們每人怎樣才能取回黑襪和白襪各兩對呢?
答案:每一對分開,一人拿一隻,因為襪子不分左右腳的;
4、果凍問題
你有一桶果凍,其中有黃色,綠色,紅色三種,閉上眼睛,同時抓取兩個果凍。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?
答案:2次4個!
5、喝啤酒問題
假如每3個空啤酒瓶可以換一瓶啤酒,某人買了10瓶啤酒,那麼他最多可以喝到多少瓶啤酒?
答案:喝完10瓶後用9個空瓶換來3瓶啤酒(喝完後有4個空瓶)喝完這三瓶又可以換到1瓶啤酒(喝完後有2個空瓶),這時他有2個空酒瓶,如果他能向老闆先借一個空酒瓶,就湊夠了3個空瓶可以換到一瓶啤酒,把這瓶喝完後將空瓶還給老闆就可以了。
所以他最多可以喝10+3+1+1=15瓶
6、三人住旅館
有三個人去住旅館,住三間房,每一間房$10元,於是他們一共付給老闆$30,第二天,老闆覺得三間房只需要$25元就夠了於是叫小弟退回$5給三位客人,誰知小弟貪心,只退回每人$1,自己偷偷拿了$2,這樣一來便等於那三位客人每人各花了九元,於是三個人一共花了$27,再加上小弟獨吞了不$2,總共是$29。可是當初他們三個人一共付出$30那麼還有$1呢?
答案:他們所消費的27元里已經包括小弟的2元了,再加退還的3元=30元。這種題一定不要亂了陣腳,根據一條思路做:這30元現在的分布是:老闆拿25元,伙計拿2元,三人各拿1元,正好!
7、三筐蘋果問題
有三筐水果,一筐裝的全是蘋果,第二筐裝的全是橘子,第三筐是橘子與蘋果混在一起。筐上的標簽都是騙人的,(就是說筐上的標簽都是錯的)你的任務是拿出其中一筐,從裡面只拿一隻水果,然後正確寫出三筐水果的標簽。
答案:從標著「混合」標簽的筐里拿一隻水果,就可以知道另外兩筐裝的是什麼水果了。
分析:從混合的拿出一個來,如果是蘋果,而貼蘋果的筐里有可能是橘子和混合,如果是混合,說明貼橘子的筐里是橘子,不成立(因為前提說了,每個標簽都是錯的)。所以貼蘋果的筐里是橘子,則貼橘子的筐里是混合。
8、汽車加油問題
一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗油量為1升,A處有無窮多的油,其他任何地點都沒有油,但該車可以在任何地點存放油以備中轉,問從A到B最少需要多少油
解答:嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵。題目可歸結為求數列an=500/(2n 1) n=0,1,2,3......的和Sn什麼時候大於等於1000,解得n>6當n=6時,S6=977.57,所以第一個中轉點離起始位置距離為1000-977.57=22.43公里.所以第一次中轉之前共耗油22.43*(2*7 1)=336.50升此後每次中轉耗油500升,所以總耗油量為7*500 336.50=3836.50升。
9、兩個人猜數問題
教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流猜這兩個數, 甲說:「我猜不出」, 乙說:「我猜不出」, 甲說:「我猜到了」, 乙說:「我也猜到了」, 問這兩個數是多少?
解答:3和4。設兩個數為n1,n2,n1> =n2,甲聽到的數為n=n1 n2,乙聽到的數為m=n1*n2,證明n1=3,n2=4是唯一解。證明:要證以上命題為真,不妨先證n=7
1)必要性:
i) n> 5 是顯然的,因為n <4不可能,n=4或者n=5甲都不可能回答不知道
ii) n> 6 因為如果n=6的話,那麼甲雖然不知道(不確定2 4還是3 3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)
iii) n <8 因為如果n> =8的話,就可以將n分解成 n=4 x 和 n=6 (x-2),那麼m可以是4x也可以是6(x-2)而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8 2,所以總之當n> =8時,n至少可以分解成兩種不同的合數之和,這樣乙說不知道的時候,甲就沒有理由馬上說知道。以上證明了必要性。
2)充分性
當n=7時,n可以分解成2 5或3 4
顯然2 5不符合題意,捨去,容易判斷出3 4符合題意,m=12,證畢
於是得到n=7 m=12 n1=3 n2=4是唯一解。
10、猴子吃香蕉問題
一個小猴子邊上有100 根香蕉,它要走過50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,請問它最多能把多少根香蕉搬到家裡。
解答:設 小猴從0 走到50, 到A 點時候他可以直接抱香蕉回家了, 可是到A 點時候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一個限制就是小猴只能抱50 只香蕉, 那麼在A 點小猴最多49 只香蕉.100-3A=49, 所以A=17. 這樣折騰完到家的時候香蕉剩100-3A-(50-A)=50-2A=16.
Ⅲ 面試IT,面試官會問哪些問題
1.你自我介紹一下吧?
2.如果要用一句話(一個詞)描述你自己,你會怎麼說?
3.你的學習成績怎麼樣?
4.你看中了我們公司的什麼?
5.你從哪些途徑了解到我們公司?
6.你認為自己有哪些優勢可以勝任這個崗位?
7.你有什麼興趣愛好?
8.你的家庭情況如何?
9.你還有什麼問題要問嗎?
有經驗的面試官,對上述每一個問題都會變著花樣衍生出不同的提法。
Ⅳ 你遇到的前端面試題都有什麼
大家好,我是王我。
隨著春節的結束,各個行業也普遍開始了上班的節奏, 不過本人17號才上班。為什麼?因為長得帥的都上班比較晚。 當然,每到新年結束,又迎來了一批招聘者與面試者,我來說說作為一年工作經驗應該知道的面試題。
HTML篇
1.doctype是什麼?有哪些類型?
2.input有哪些新類型?簡要說明其8用法。
3.HTML5有哪些新特性,移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?
4.bootstrap響應式的原理是什麼?
5.多移動終端頁面適配是如何實現的?
CSS篇
1.如何實現兩列布局,左邊自適應,右邊固定寬度?
2.用CSS畫一個三角形
3.CSS實現字體大寫
4.display有哪些常用的屬性值?分別是什麼意思?
5.position為absolute,relative,fixed的定點位置
6.用三種方法清除浮動
7.請介紹一下margin塌陷問題
js篇
1.什麼是事件冒泡和捕獲?如何阻止事件冒泡?(分別用原生和jquery實現)
2.js創建對象,至少使用三種方法
3.簡述一下事件穿透以及解決辦法
4.用三種方式判斷變數類型是否是數組
5.如何實現對象的拷貝?
6.什麼是閉包?閉包的優缺點。
7.簡述一下ajax請求的過程。
8.簡述一下new一個人構造函數的人過程。
9.為什麼會有跨域?是怎麼解決跨域問題的?簡述一下原理。
10.js原始數據類型有哪些?
11.學一個函數,判斷一個變數是否是字元串
12.typeof有哪些結果?
13.剪頭函數和普通函數有什麼區別?
14.請用三種方法實現數組去重
15.href和src有什麼區別?
jquery篇
1.attr()和prop()有什麼區別?
2.on和bind有什麼區別?js動態添加的dom元素是通過on還是bind?
3.touch和click有什麼區別?
4.window.onload和jquery的ready有什麼區別?
vue篇
1.簡述一下vue的生命周期及其特點
2.vue雙向綁定的原理是什麼?
3.vue的特點有哪些?和jquery有什麼區別?
4.父子組件之間傳遞數據的方法
5.子組件如何共享數據?
6.一般有什麼工具進行數據交互?
7.webpack的原理是什麼?
8.簡述一下$nextTick的用法
瀏覽器篇
1.cookie、sessionStorage、localStorage的區別是什麼?
2.有用過瀏覽器緩存嗎?簡述一下基本的緩存機制
網路篇
1.http和https之間的區別
2.從伺服器的安全考慮,是使用get請求還是post請求?
3.URL請求的過程有哪些?
項目經驗篇
1.項目中遇到的最大挑戰以及解決辦法
2.常見的網頁優化有哪些?
作為一個面試一年以內工作經驗的前端程序員來說,以上的問題能夠倒答如流月薪6k應該不成問題啦。這些面試題也是我在很多面試中感覺經常被問到的題目。
希望大家年後找工作能夠順順利利, 千萬不要跟我一樣哦,只有帥氣就一無所有了。
大家好,我是王我,中國最帥的前端程序員。
前幾次都是各種培訓公司,各種忽悠就不提了,說說後面4次面試的經歷。
第一次是面一個小公司,不過他們好像沒有厲害的前端,來面我的是個後端,一來沒有問我關於js的知識,直接問我以前做過什麼,有沒有經驗,我本人不會吹牛,簡歷也沒怎麼包裝,就是自己把自學的知識和做的幾個小demo弄在上面,也用github掛在頁面上了,不過他根本不點開看,也不問,問我會不會vue,我當時對框架還不了解,他就說他們需要能直接上手開始寫的,所以我第一個就直接掛了。
第二次面試是一個國企,這個問了很多問題,都很基礎,js數據類型,數組操作,事件,大概就是高程的前面幾章看看就差不多都能答到,然後因為他們主要用jq,所以問了很多jq的操作,關於節點的,動畫的,我看鋒利的jq大概看了3遍,也練過多次,所以我答的很熟。然後問了些布局方面的,bootstrap我了解過,又看過css3,所以這方面也沒啥問題,最後在現場做了個題目,主要就是布局然後通過ajax呈現數據。後面聽介紹我面試的說面試官比較滿意,說我jq很熟,一面就過了。可惜後面電話面試不知怎麼回事可能表現的不夠自信,雖然沒問技術,但是我沒啥自信,把沒項目經驗什麼的也不知怎麼就一五一十交代了,估計因為這個掛掉了。
第三次沒問問題,直接就是一套題開做,我在那做了一個多小時。題目就是按照要求一步一步做一個頁面出來,我也搞忘了我當時卡在哪個地方了,坐在那得時候就是做不出來,沒有設計圖,要根據他的描述自己找個設計圖然後做,我第一次遇到這個有點懵,雖然當時沒做出來,不過回來我自己花了幾個小時把它做了。所以這個也是涼了。
第四個問的比較多,數據類型,數組操作,跨域,ajax,閉包,原型鏈,繼承,深拷貝,淺拷貝,模塊amd cmd,基本都是問的js。然後問了html5的新特性 css3 的新特性,遇到過什麼瀏覽器的兼容性問題,怎麼解決的,以後想往什麼方面發展。這個時候我已經會點vue了,照著做了個小demo,不過後來知道公司用的angularjs,面試官也沒看我做的,問也沒問。。以前聽網上說要帶上自己的項目去面試感覺沒起多大效果。
最後總結下如果面的比較初級的崗位,應該主要問js,原型鏈,繼承,閉包,深淺拷貝,ajax,跨域,然後js的基礎知識,對了還有apply和call也問了,html5的新特性了解下就行。主要就是看你js掌握的程度,如果稍微要求高一點的,暫時還沒面過,等以後面過在來回答
1. cookie session 的用途和區別,以及有效期
1、cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
2. vue的數據綁定原理,mvvm與mvc的區別
MVVM:
m:model數據模型層 v:view視圖層 vm:ViewModel
vue中採用的是mvvm模式,這是從mvc衍生過來的
MVVM讓視圖與viewmodel直接的關系特別的緊密,就是為了解決mvc反饋不及時的問題
圖片說明一下:
說到MVVM就要說一下雙向綁定和數據劫持的原理,
MVC:
m:model數據模型層 v:view視圖層 c:controller控制器
原理: c層需要控制model層的數據在view層進行顯示
MVC兩種方式,圖片說明:
總結:
mvvm與mvc最大的區別:
MVVM實現了view與model的自動同步,也就是model屬性改變的時候, 我們不需要再自己手動操作dom元素去改變view的顯示,而是改變屬性後該屬性對應的view層會自動改變。
不懂得可以復制鏈接查看:
https://www.pianshen.com/article/3716256399/
3. storage 的區別 sessionStorage localStorage
localStorage 的生命周期是永久性的。假若使用localStorage存儲數據,即使關閉瀏覽器,也不會讓數據消失,除非主動的去刪除數據,使用的方法如上所示。localStorage有length屬性
sessionStorage 的生命周期是在瀏覽器關閉前。也就是說,在整個瀏覽器未關閉前,其數據一直都是存在的。sessionStorage也有length屬性,其基本的判斷和使用方法和localStorage的使用是一致的
有一個文本框 通過v-bind綁定了value屬性 值為myname 是我們在vue實例中定義的屬性
傳統我們獲取文本框值方法 可能通過getElementById找到文本框 然後獲取其value屬性
但是vue中直接通過v-bind綁定了value屬性 所以不需要像之前那樣獲取值
所以在後面的按鈕中獲取name值 直接獲取vue實例對象data裡面的myname屬性即可
【數據為尊 ----數據映射到瀏覽器 如果數據v-model後修改(肯定input)然後到數據在有數據映射到瀏覽器頁面 ----映射關系統稱】
緩存路由組件
使用的是vue的一個組件,參考vue的官方文檔
使用這個東西可以保證我們在切換組件的時候,原來顯示的組件不被銷毀
-----【保障組件的數據不會被切換路由而銷毀數據】
Home是對應的組件對象的名字,不是路由的名字
6.多維數組拍平
數組拍平也稱數組扁平化,就是將數組裡面的數組打開,最後合並為一個數組
一紅六種方法吧……
了解的請看: https://www.cnblogs.com/guan-shan/p/10165737.html
7.跨域的原因 解決方案
跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這里跨域是廣義的。
這樣就可以說同源策略----協議---埠---域名
原生的src和href可以解決跨域
代理可以解決
請求頭也可以攜帶瀏覽器提示的也可以解決
一般都是後端解決跨域問題
【別的需要了解看下方鏈接】
https://blog.csdn.net/qq_41604383/article/details/100770100
8.uniApp兼容問題§ 如果你使用cli創建項目(即項目根目錄是package.json),不管用什麼ide,即便是用HBuilderX,切記cli項目的編譯器是在項目下的,HBuilderX不管怎麼升級都不會影響編譯器版本。你需要手動npm update來升級編譯器。以及如果你想要安裝less、scss等預編譯器,也需要自己npm安裝在項目下,而不是在HBuilderX的插件管理里安裝。
§ 如果你使用離線打包,請注意HBuilderX升級後,真機運行基座和雲打包對應引擎跟隨HBuilderX升級,而你的sdk需要手動升級。sdk的版本升級一般滯後HBuilderX正式版升級一兩天。
§ 如果你使用自定義基座,之前製作的自定義基座是不會跟隨HBuilderX升級的,升級HBuilderX後你應該重新製作新版自定義基座。
§ 如果你使用wgt升級,新版HBuilderX編譯的wgt,運行到之前的runtime上,一定要先測試好,看有沒有兼容性問題。如果有問題,就不要wgt升級,整包升級。
§ 考慮到向下兼容,uni-app編譯器在升級為新的自定義組件模式後,同時保留了對老編譯模式的向下兼容。
在HBuilderX alpha版中,App端一定會使用新編譯器,不理會manifest配置。
在HBuilderX 正式版中,新創建的項目會使用新編譯器,老項目不會強制使用,而是開發者自己在manifest里配置開啟。
§ 如果你使用其他ide開發uni-app,會經常因為拼錯單詞而運行失敗,因為經過webpack編譯一道,很多錯誤反應的不夠直觀,排錯時間很長,不如從開始就依賴有良好提示的HBuilderX,避免敲錯單詞。
§ 雲打包的引擎版本說明
HBuilderX Alpha,只有1套雲打包機,不管你的HBuilderX alpha版本多少,對應的打包機一定是最新的alpha版的客戶端引擎。
HBuilderX正式版,有2套打包機,一個是最新正式版,一個是次新正式版。
中間的緊急更新版本沒有獨立打包機。
舉個例子:
HBuilderX 有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1這幾個正式版。
那麼當前可用的打包機有1.9.1和1.8.2這2台。(即每個大版本的最後一個版本)
除了這2個HBuilderX版本外,其他版本的雲打包都指向最新的1.9.1版對應的打包機。(即只保留2個大版本的雲打包機)
【詳情請看】
https://ask.dcloud.net.cn/article/35845
一、HTML
HTML書寫規范
H5新增標簽
HTML渲染過程
二、CSS
css盒子模型概念
css彈性布局概念
三、javaScript
事件模型
DOM2級事件模型
閉包
原型鏈
四、移動Web開發
常見的布局方案
移動端前端常見的觸摸相關事件touch、tap、swipe等整理
移動端前端手勢事件
移動端頁面渲染優化
GPU渲染
GPU核心渲染過程
五、調試
常用的調試工具
Chrome控制台調試js使用
移動端測試
六、HTTP網路知識
常見的HTTP狀態碼
不同請求類型的區別
WEB緩存方案
——————————
牛客網(www.nowcoder.com)
- 專業IT筆試面試備考平台
- 最全C++JAVA前端等互聯網技術求職題庫
- 全面提升IT編程能力
- 程序員交友聖地
分享了一些Web前端的面試題,限時一小時,你看看自己能夠答出多少道!
放心,這些面試題都是一些非常基礎的知識,只要你在平時認真聽課、學習了,那麼這些面試題肯定不會難道你。
建議:雖然沒有人監督你,但還是希望你不要去尋找答案,脫離網路,拿起紙筆,你試一下自己究竟能夠答出個什麼水平!有沒有真本領?答案盡在這些面試題里!那麼,你准備好了嗎?OK!計時開始!
一、HTML常見題目01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
02、HTML5為什麼只需要寫?
03、行內元素有哪些?塊級元素有哪些?空(void)元素有那些?
04、頁面導入樣式時,使用link和@import有什麼區別?
05、介紹一下你對瀏覽器內核的理解?
06、常見的瀏覽器內核有哪些?
07、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?
08、如何區分HTML和HTML5?
09、簡述一下你對HTML語義化的理解?
10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
二、CSS類的題目01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
02、CSS選擇符有哪些?哪些屬性可以繼承?
03、CSS優先順序演算法如何計算?
04、CSS3新增偽類有那些?
05、如何居中p?如何居中一個浮動元素?如何讓絕對定位的p居中?
06、display有哪些值?說明他們的作用。
07、position的值relative和absolute定位原點是?
08、CSS3有哪些新特性?
09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
三、Java類的題目
01、介紹Java的基本數據類型。
02、說說寫Java的基本規范?
03、Java原型,原型鏈?有什麼特點?
04、Java有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?
05、Java如何實現繼承?
06、Java創建對象的幾種方式?
07、Java作用鏈域?
08、談談This對象的理解。
09、eval是做什麼的?
10、什麼是window對象?什麼是document對象?
OK,一小時到了,這個時間可不算短了,那麼這些面試題你答出了幾道呢?你寫的答案正確了嗎?現在你可以去翻看答案了。
如果你答出了絕大多數的或者是全部的題,並且答案也正確了,那麼恭喜你……
你這時心裡是不是有點小竊喜,認為自己有能力拿高薪了?雖然我也很想這么告訴你,但事實上這只能表明你的基礎扎實,畢竟這只是一些非常基礎的面試題。騷年~繼續努力吧!
如果你只答出了小部分或者答出了大部分題但答案不正確,那麼我只想說:「騷年,你的水平還差的遠呢。」連這么基礎的題你都打不出來,還想拿高薪?回去再練一段時間吧!
扎實的基礎是你拿高薪的重要武器,如果你連基礎都不扎實,那麼想要攻克「高薪」這個厚實的堡壘,那隻是痴人說夢罷了。
1.前端框架類問題,問你會不會用vue react啊
2.語言類,問你一些JavaScript語言的問題
3.項目經驗,讓你講講做過的項目,遇到的問題和解決之道
Ⅳ 程序員經典面試題:並發,容易帶來哪些問題
編程對於很多人來說,還是比較好上手的。當你學會了一門語言,可以編寫一些程序了,很快就會遇到一道坎,並發編程,單線程下好好跑著的程序,怎麼就運行異常了?怎麼就得不到期望的結果。在面試中,並發編程也是經常出現,我們今天來討論一個問題, 並發編程,容易出哪些問題?
相信大家在學習並發編程的時候,都會遇到這樣一個經典問題,有一個函數,執行i=i+1,執行1000遍。在單線程的環境下,得到的結果都是預期的1000。如果是兩個線程同時運行,那麼,得到的結果可能是2000,也有可能小於2000。
這是因為i=i+1不是一個原子操作,我們會獲取i的值,然後執行一次加法運算,最後將結果賦值給i。當多個線程執行的時候,獲取到的i的值之後,在執行後面的動作之前,另外一個線程已經修改了i,造成最終的結果小於2000。
並發編程的時候,我們往往無法確定多個線程之間的執行順序,經常我們會出現這樣一個錯誤。我們在一個線程中使用的變數,會在另外一個線程中進行初始化或者賦值。最常見的,便是我們在主線程上創建一個子線程,然後再進行變數的初始化,子線程的執行可能早於父線程,造成程序錯誤。
為了解決並發問題,我們通常會引入鎖、信號、信號量等手段來保證臨界區只會被一個線程訪問,或者讓一個線程等待另外一個線程執行完成。但是,引入鎖之後,我們又可能會出現死鎖的問題,例如:線程1與線程2都需要搶佔AB兩把鎖,假設線程1先搶佔了A鎖,線程2搶佔了B鎖,這個時候,線程1在等待B鎖,線程2在等待A鎖,就這樣,等到海枯石爛,我們稱之為死鎖。
出現死鎖,需要同時滿足下面幾個條件:1.線程需要對需要的資源進行互斥訪問(例如一個線程搶到鎖)2.持有並等待(例如一個線程搶到了A鎖,然後在等待B鎖)3.非搶占(線程搶到了鎖之後,不能被其他線程搶到)4.循環等待,線程之前存在一個環路。
那麼,如何解決死鎖的問題呢?既然出現死鎖需要同時滿足上面的幾個條件,那麼,我們只要破壞其中一個條件,就能夠避免死鎖問題。
今天,我們了解到並發編程帶來的問題與解決方案,希望對你在平時的工作或者面試有所幫助。
Ⅵ 程序員人品面試題及答案,HR必備!
在我們招聘技術的時候,如果只是一個面試官面試,通常會遇到,面試管徇私舞弊,類似狗眼看人低,或者遇到高手心存嫉妒不願招聘此人的情況,從而剔除掉面試的人才,無法有效招聘到公司所需的人。
如何避免面試人員的徇私舞弊,就至關重要,我們統長可以通過加試的流程,或者加面的流程來規避這種事情,通常情況下,我們也可以通過筆試+面試+面試2的流程進行,這樣的環節越多,面試官徇私舞弊的問題就越少,對於重要的崗位我們依然要綜合考慮清晰,不能讓人品差的人混入。
1.排擠或者拉幫結派,在公司內部製造不和睦的情景。
2.影響公司的正常運營,還可能存在貪污腐敗像閑。
3.可以吃回扣的崗位,尤其是采購會給公司造成重大的損失。
對此我總結和個人的經驗,整理如下的10個人品測試題,每小題10分共100分,同樣的您可以和技術題混合在一起對求職者進行這樣的筆試。
如果A是您的直屬領導,當遇到了緊急情況,且你正在忙手頭要緊事,需要你的協助或者幫助時你會怎麼做?( )
A.盡力而為 B.手上工作忙,會建議找別人 C.我沒有必要幫助他人 D.放下手頭要緊的事,去協助領導
答案:B
解析:作為領導,和下屬都屬於公司員工,沒有誰更加需要幫助,只有自己的工作職責,和同事之間的互幫互助行為,二遇到這種事,應是優先做好的自己的事,再去幫助他人,選A的人是屬於,阿諛奉承拍馬屁的類型,選C的人是極度理性,且規規矩矩的人,選D的人是屬於,斜度個人工作職責的行為。
如果A是您的直屬領導,他今天搬家,告訴你去他家裡幫忙,他這種行為屬於?( )
A.徇私舞弊 B.私事公辦 C.小氣 D.欺負員工
答案:B
解析:作為領導,搬家時個人私事,不能要求任何的員工幫忙,且給錢也不行,這種行為屬於私事公辦。
直屬的領導,再一次工作失誤後,果斷甩鍋下屬,且指責有續,領導的這種行為是否屬於正常范疇,遇到這種的事情,領導最好應該怎麼做?
簡答題:兩問,行為和怎麼做。
在公共場所,因為瑣事辱罵他人或者領導,這種行為屬於什麼行為,是否違法,能否維權?
簡答題:三問,行為、違法和如何維權,主要考的求職者對法律和道德的認知。
當你下班途中,遇到一個摔倒的老人,這附近有很多碰瓷的傳聞,且沒有攝像頭和路人,這時候你會怎麼做?
A.默默路過,並報警。 B.先報警,然後扶起老人 C.錄視頻,且報警,扶起老人 D.回去叫人
答案:C
解析:只有C是最好的處理方式,且能體現出這位求職者的心思縝密。
如果以後你面試新人,遇到一個能力特別強的人,但沒有學歷,且人說話很沖,工作能力完全過關,你會向領導反應錄取他嘛?()
A.不會,沒學歷 B.可能對我有影響,拒絕錄用 C.繼續等待其他合適人選 D.和領導與同事商議後錄用
答案:D
解析:
選A的人可以看出這不是一個好的員工。公司是一個商業組織,目的是為了盈利,能力強的人往往求之不得,不能因為學歷問題剔除。
選B的人可以看出這是一個小氣,且人品和眼界都很低的員工,建議直接pass,後續對公司的發展也不好。
選C的人可以看出是個負責任的員工,會選擇繼續等待更合適的人選。
在你身上發生了一件事,並不是丑聞,也不是壞事,就是一件很平常的事情,這時你會覺得?()
A.自己是焦點 B.不想去上班 C.自己丟人了 D.散布的這個人真可惡 E.平平淡淡
答案:E
解析:有心理疾病的人,才會覺得自己是焦點,才會有負面情緒。
如果你是個技術大牛,且領導要求你必須教導其他人,你會怎麼做?()
A.熱心是不需要強迫的,會不代表一定要交
B.不聽從領導的話
C.要求公司給予,教導他人的費用。
D.接受領導的要求去教人。
答案:C
解析:技術是自己的,屬於個人,不屬於公司,且教不教不需要強制,強制屬於違法行為,懂得不代表義務教導,這屬於行為綁架的行為。
領導一直強制你做事,且必須你做,出了事就甩鍋給你,你會怎麼做?()
A.辭職不幹 B.向更高領導舉報 C.果斷拒絕 D.頂撞領導
答案:B A
解析:有這樣愛甩鍋的公司領導,也不是什麼好公司,在這里工作不是勾心鬥角就是你爭我奪,故此B和A都是對的。
假如你遇到困難,你不想得到別人的幫助,但是就是有人要幫你,這種行為屬於什麼行為?()
A.強人所難 B.太過熱心 C.不考慮其他人感受 D.不尊重我的主觀意圖
答案:A B C D
解析:這是多選題,都對,別人不需要那麼就應該尊重別人,即使是送黃金,也會有人不需要的時候,不需要而自以為是強迫別人接受,就屬於強人所難,不考慮其他人感受,不尊重個人主觀意圖。
Ⅶ PHP程序員崗位招聘面試題有哪些
可能會問以下問題:(這是一個多元的問題,這和你應聘的公司規模,行業,技術層次有一定的關系)
1、你會使用什麼框架?
2、你知道PHP有哪些框架?
3、你知道或使用過哪些PHP庫?
4、你用PHP寫過框架嗎?
5、你有作品嗎?
6、你怎麼調試PHP?
7、你知道設計模型嗎?
8、說一下PHP個版本的差異。
9、說一下某函數的具體作用。
10、給你一個演算法讓你用PHP實現。
... ...
總之有很多問題可能是意料不到的,所以建議你去牛客網多練習一下或者去海投簡歷體驗應聘過程,失敗沒什麼大不了的。
Ⅷ java程序員面試的問題
java面試題大全-基礎方面Java基礎方面:
1、作用域public,private,protected,以及不寫時的區別
答:區別如下:
作用域 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫時默認為friendly
2、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)
答:匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現
3、Static Nested Class 和 Inner Class的不同
答:Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
4、&和&&的區別
答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)
5、Collection 和 Collections的區別
答:Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作
6、什麼時候用assert
答:assertion(斷言)在軟體開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion用於保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟體發布後,assertion檢查通常是關閉的
7、String s = new String("xyz");創建了幾個String Object
答:兩個,一個字元對象,一個字元對象引用對象
8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少
答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回與參數最接近的長整數,參數加1/2後求其floor
9、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯
答:short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)short s1 = 1; s1 += 1;(可以正確編譯)
10、Java有沒有goto
答:java中的保留字,現在沒有在java中使用
11、數組有沒有length()這個方法? String有沒有length()這個方法
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法
12、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型
答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型
13、Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別
答:Set里的元素是不能重復的,那麼用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值
14、給我一個你最常見到的runtime exception
答:常見的運行時異常有如下這些ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
15、error和exception有什麼區別
答:error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況
16、List, Set, Map是否繼承自Collection介面
答: List,Set是,Map不是
17、abstract class和interface有什麼區別
答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法
介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面
18、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
答:都不能
19、介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)
答:介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數
20、構造器Constructor是否可被override
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
21、是否可以繼承String類
答:String類是final類故不可以繼承
22、try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後
答:會執行,在return前執行
23、用最有效率的方法算出2乘以8等於幾
答:2 << 3
24、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對
答:不對,有相同的hash code
25、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞
答:是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的
26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:witch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich
27、ArrayList和Vector的區別,HashMap和Hashtable的區別
答:就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
就HashMap與HashTable主要從三方面來說。
一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value
28、char型變數中能不能存貯一個中文漢字?為什麼?
答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char佔16個位元組,所以放一個中文是沒問題的
29、GC是什麼? 為什麼要有GC
答:GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。
30、float型float f=3.4是否正確?
答:不正確。精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.4
31、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│└Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
32、抽象類與介面?
答:抽象類與介面都用於抽象,但是抽象類(JAVA中)可以有自己的部分實現,而介面則完全是一個標識(同時有多重繼承的功能)。
JAVA類實現序例化的方法是實現java.io.Serializable介面
Collection框架中實現比較要實現Comparable 介面和 Comparator 介面
33、STRING與STRINGBUFFER的區別。
答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字元串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法
34、談談final, finally, finalize的區別
答:final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally?再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)
finalize?方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的
35、面向對象的特徵有哪些方面
答:主要有以下四方面:
1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2.繼承:
繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。
4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
36、String是最基本的數據類型嗎
答:基本數據類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類
37、int 和 Integer 有什麼區別
答:Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。
原始類型封裝類,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble
引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的預設值。對象引用實例變數的預設值為 null,而原始類型實例變數的預設值與它們的類型有關
38、運行時異常與一般異常有何異同
答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。
39、說出ArrayList,Vector, LinkedList的存儲性能和特性
答:ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。
40、HashMap和Hashtable的區別
答:HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。
Ⅸ 2021面試網路工程師的題目
面試 的目的是確定面試者如何處理他們所選擇的研究領域的問題,以及他們如何批判性地思考問題。下面我給大家帶來2021面試網路工程師的題目參考,希望能幫助到大家!
Java多線程 面試題 目
1、什麼是線程?
線程是 操作系統 能夠進行運算調度的最小單位,它被包含在進程之中,是進程中的實際運作單位。程序員可以通過它進行多處理器編程,你可以使用多線程對運算密集型任務提速。比如,如果一個線程完成一個任務要100毫秒,那麼用十個線程完成改任務只需10毫秒。
2、線程和進程有什麼區別?
線程是進程的子集,一個進程可以有很多線程,每條線程並行執行不同的任務。不同的進程使用不同的內存空間,而所有的線程共享一片相同的內存空間。每個線程都擁有單獨的棧內存用來存儲本地數據。
3、如何在Java中實現線程?
兩種方式:java.lang.Thread 類的實例就是一個線程但是它需要調用java.lang.Runnable介面來執行,由於線程類本身就是調用的Runnable介面所以你可以繼承java.lang.Thread 類或者直接調用Runnable介面來重寫run() 方法 實現線程。
4、Java 關鍵字volatile 與 synchronized 作用與區別?
Volatile:
它所修飾的變數不保留拷貝,直接訪問主內存中的。
在Java內存模型中,有main memory,每個線程也有自己的memory (例如寄存器)。為了性能,一個線程會在自己的memory中保持要訪問的變數的副本。這樣就會出現同一個變數在某個瞬間,在一個線程的memory中的值可能與另外一個線程memory中的值,或者main memory中的值不一致的情況。 一個變數聲明為volatile,就意味著這個變數是隨時會被其他線程修改的,因此不能將它cache在線程memory中。
synchronized:
當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多隻有一個線程執行該段代碼。
一、當兩個並發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以後才能執行該代碼塊。
二、然而,當一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。
三、尤其關鍵的是,當一個線程訪問object的一個synchronized(this)同步代碼塊時,其他線程對object中所有 其它 synchronized(this)同步代碼塊的訪問將被阻塞。
四、當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。
五、以上規則對其它對象鎖同樣適用。
5、有哪些不同的線程生命周期?
當我們在Java程序中新建一個線程時,它的狀態是New。當我們調用線程的start()方法時,狀態被改變為Runnable。線程調度器會為Runnable線程池中的線程分配CPU時間並且講它們的狀態改變為Running。其他的線程狀態還有Waiting,Blocked 和Dead。
6、你對線程優先順序的理解是什麼?
每一個線程都是有優先順序的,一般來說,高優先順序的線程在運行時會具有優先權,但這依賴於線程調度的實現,這個實現是和操作系統相關的(OS dependent)。
我們可以定義線程的優先順序,但是這並不能保證高優先順序的線程會在低優先順序的線程前執行。線程優先順序是一個int變數(從1-10),1代表最低優先順序,10代表最高優先順序。
7、什麼是死鎖(Deadlock)?如何分析和避免死鎖?
死鎖是指兩個以上的線程永遠阻塞的情況,這種情況產生至少需要兩個以上的線程和兩個以上的資源。
分析死鎖,我們需要查看Java應用程序的線程轉儲。我們需要找出那些狀態為BLOCKED的線程和他們等待的資源。每個資源都有一個唯一的id,用這個id我們可以找出哪些線程已經擁有了它的對象鎖。
避免嵌套鎖,只在需要的地方使用鎖和避免無限期等待是避免死鎖的通常辦法。
8、什麼是線程安全?Vector是一個線程安全類嗎?
如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是線程安全的。
一個線程安全的計數器類的同一個實例對象在被多個線程使用的情況下也不會出現計算失誤。很顯然你可以將集合類分成兩組,線程安全和非線程安全的。Vector 是用同步方法來實現線程安全的, 而和它相似的ArrayList不是線程安全的。
9、Java中如何停止一個線程?
Java提供了很豐富的API但沒有為停止線程提供API。JDK 1.0本來有一些像stop(), suspend()和resume()的控制方法但是由於潛在的死鎖威脅因此在後續的JDK版本中他們被棄用了,之後Java API的設計者就沒有提供一個兼容且線程安全的方法來停止一個線程。
當run()或者 call()方法執行完的時候線程會自動結束,如果要手動結束一個線程,你可以用volatile 布爾變數來退出run()方法的循環或者是取消任務來中斷線程。
10、什麼是ThreadLocal?
ThreadLocal用於創建線程的本地變數,我們知道一個對象的所有線程會共享它的全局變數,所以這些變數不是線程安全的,我們可以使用同步技術。但是當我們不想使用同步的時候,我們可以選擇ThreadLocal變數。
每個線程都會擁有他們自己的Thread變數,它們可以使用get()set()方法去獲取他們的默認值或者在線程內部改變他們的值。ThreadLocal實例通常是希望它們同線程狀態關聯起來是private static屬性。
Kubernetes面試題匯總
1、什麼是Kubernetes?
Kubernetes是一個開源容器管理工具,負責容器部署,容器擴縮容以及負載平衡。作為Google的創意之作,它提供了出色的社區,並與所有雲提供商合作。因此,我們可以說Kubernetes不是一個容器化平台,而是一個多容器管理解決方案。
2、Kubernetes與Docker有什麼關系?
眾所周知,Docker提供容器的生命周期管理,Docker鏡像構建運行時容器。但是,由於這些單獨的容器必須通信,因此使用Kubernetes。因此,我們說Docker構建容器,這些容器通過Kubernetes相互通信。因此,可以使用Kubernetes手動關聯和編排在多個主機上運行的容器。
3、什麼是Container Orchestration?
考慮一個應用程序有5-6個微服務的場景。現在,這些微服務被放在單獨的容器中,但如果沒有容器編排就無法進行通信。因此,由於編排意味著所有樂器在音樂中和諧共處,所以類似的容器編排意味著各個容器中的所有服務協同工作以滿足單個伺服器的需求。
4、Kubernetes如何簡化容器化部署?
由於典型應用程序將具有跨多個主機運行的容器集群,因此所有這些容器都需要相互通信。因此,要做到這一點,你需要一些能夠負載平衡,擴展和監控容器的東西。由於Kubernetes與雲無關並且可以在任何公共/私有提供商上運行,因此必須是您簡化容器化部署的選擇。
5、您對Kubernetes的集群了解多少?
Kubernetes背後的基礎是我們可以實施所需的狀態管理,我的意思是我們可以提供特定配置的集群服務,並且集群服務將在基礎架構中運行並運行該配置。
因此,正如您所看到的,部署文件將具有提供給集群服務所需的所有配置。現在,部署文件將被提供給API,然後由集群服務決定如何在環境中安排這些pod,並確保正確運行的pod數量。
因此,位於服務前面的API,工作節點和節點運行的Kubelet進程,共同構成了Kubernetes集群。
6、Kubernetes Architecture的不同組件有哪些?
Kubernetes Architecture主要有兩個組件 - 主節點和工作節點。如下圖所示,master和worker節點中包含許多內置組件。主節點具有kube-controller-manager,kube-apiserver,kube-scheler等。而工作節點具有在每個節點上運行的kubelet和kube-proxy。
7、您能否介紹一下Kubernetes中主節點的工作情況?
Kubernetes master控制容器存在的節點和節點內部。現在,這些單獨的容器包含在容器內部和每個容器內部,您可以根據配置和要求擁有不同數量的容器。
因此,如果必須部署pod,則可以使用用戶界面或命令行界面部署它們。然後,在節點上調度這些pod,並根據資源需求,將pod分配給這些節點。kube-apiserver確保在Kubernetes節點和主組件之間建立通信。
8、kube-apiserver和kube-scheler的作用是什麼?
kube -apiserver遵循橫向擴展架構,是主節點控制面板的前端。這將公開Kubernetes主節點組件的所有API,並負責在Kubernetes節點和Kubernetes主組件之間建立通信。
kube-scheler負責工作節點上工作負載的分配和管理。因此,它根據資源需求選擇最合適的節點來運行未調度的pod,並跟蹤資源利用率。它確保不在已滿的節點上調度工作負載。
9、你對Kubernetes的負載均衡器有什麼了解?
負載均衡器是暴露服務的最常見和標准方式之一。根據工作環境使用兩種類型的負載均衡器,即內部負載均衡器或外部負載均衡器。內部負載均衡器自動平衡負載並使用所需配置分配容器,而外部負載均衡器將流量從外部負載引導至後端容器。
10、Replica Set 和 Replication Controller之間有什麼區別?
Replica Set 和 Replication Controller幾乎完全相同。它們都確保在任何給定時間運行指定數量的pod副本。不同之處在於復制pod使用的選擇器。Replica Set使用基於集合的選擇器,而Replication Controller使用基於許可權的選擇器。
Equity-Based選擇器:這種類型的選擇器允許按標簽鍵和值進行過濾。因此,在外行術語中,基於Equity的選擇器將僅查找與標簽具有完全相同 短語 的pod。
示例:假設您的標簽鍵表示app = nginx,那麼,使用此選擇器,您只能查找標簽應用程序等於nginx的那些pod。
Selector-Based選擇器:此類型的選擇器允許根據一組值過濾鍵。因此,換句話說,基於Selector的選擇器將查找已在集合中提及其標簽的pod。
示例:假設您的標簽鍵在(nginx,NPS,Apache)中顯示應用程序。然後,使用此選擇器,如果您的應用程序等於任何nginx,NPS或Apache,則選擇器將其視為真實結果。
滲透攻擊的測試步驟
1.如果原始值為2,我們使用(1+1)或(3-1),程序作出相同回應,表明易受攻擊
2.如果單引號被過濾掉,我們可以用ASCII命令,使它返回字元的數字化代碼,如51-ASCII(1)
3.在URL編碼中,&和=用於鏈接名稱/值對,建立查詢字元串應當分別使用%26和%3d進行編碼
4.如查詢字元串不允許使用空格,使用+或%20編碼
5.分號被用於分割cookie自讀,使用%3d編碼
2021面試網路工程師的題目相關 文章 :
★ 關於網路工程師的面試題有哪些
★ 網路管理員面試題及答案大全
★ 最新的運維工程師面試題目整理
★ 網路測試工程師面試題及答案
★ 計算機網路面試題及參考答案
★ 網路工程師面試自我介紹範文五篇
★ 面試網路技術工程師的有哪些提問
★ 最新的it運維工程師面試題整理