面試職位:實(shí)習(xí)軟件開(kāi)發(fā)工程師
東莞海露歐信息科技有限公司弥激,也叫青天科技(NewSky Security)
崗位職責(zé):
1百炬、負(fù)責(zé)項(xiàng)目模塊的開(kāi)發(fā)和測(cè)試工作懒豹;
2具钥、規(guī)范工作習(xí)慣:按要求提交工作計(jì)劃豆村、填寫(xiě)工作日志;
任職要求:
1骂删、扎實(shí)的計(jì)算機(jī)專(zhuān)業(yè)基礎(chǔ)知識(shí)掌动,熟悉常用的數(shù)據(jù)結(jié)構(gòu)和算法;
2宁玫、對(duì)web開(kāi)發(fā)技術(shù)和語(yǔ)言有一定的基礎(chǔ)和認(rèn)識(shí)粗恢;
3、至少熟悉一種編程語(yǔ)言欧瘪,熟悉git和linux操作環(huán)境眷射;
4、性格開(kāi)朗樂(lè)觀佛掖、善于交流妖碉、喜歡研究,有團(tuán)隊(duì)精神芥被,具有較強(qiáng)的敬業(yè)精神和責(zé)任感欧宜;
5、接觸過(guò)常用數(shù)據(jù)庫(kù)如mysql拴魄、redis或者mongodb者優(yōu)先冗茸;
6、有過(guò)數(shù)據(jù)挖掘項(xiàng)目經(jīng)驗(yàn)優(yōu)先匹中;
(后端用python夏漱、go開(kāi)發(fā))
面試提問(wèn):
(完全沒(méi)有能夠完整回答上來(lái)的)
1.表的連接
(轉(zhuǎn)自:https://www.cnblogs.com/janneystory/p/5618140.html)
設(shè)有表:
學(xué)生表:student(id,姓名,年齡职员,性別 )
成績(jī)表:score(id,學(xué)生id麻蹋,成績(jī))
(1)內(nèi)連接(inner join……on):select student.* ,Score.* from student inner join Score on student.id=Score.sid
(2)左連接(left join ……on):select student.* ,Score.* from student left join Score on student.id=Score.sid
總結(jié):left join 以左表為準(zhǔn),查詢(xún)出左表的所有數(shù)據(jù)焊切,右表中有對(duì)應(yīng)的則顯示出來(lái)扮授,沒(méi)有對(duì)應(yīng)的則顯示為null
(3)右連接(right join ……on)
select student.* ,Score.* from student right join Score on student.id=Score.sid
總結(jié):right join 以右表為準(zhǔn)芳室,查詢(xún)出右表的所有數(shù)據(jù),左表中有對(duì)應(yīng)的則顯示出來(lái)刹勃,沒(méi)有對(duì)應(yīng)的則顯示為null.
(4)全連接
select student.* ,Score.* from student full join Score on student.id=Score.sid
總結(jié):full join 是為left和right的集合堪侯,某表中某一行在另一表中無(wú)匹配行,則相應(yīng)列的內(nèi)容為NULL荔仁。
(5)交叉連接(cross join)伍宦,注意沒(méi)有on條件
select student.* ,Score.* from student cross join Score
叉聯(lián)接也稱(chēng)作笛卡爾積。相當(dāng)于兩個(gè)表中的所有行進(jìn)行排列組合乏梁。
若表a有X行次洼,表b有Y行,則將返回XY行記錄遇骑。
2.介紹一下SSH框架
SSH是 struts+spring+hibernate的一個(gè)集成框架卖毁,是基于MVC的開(kāi)發(fā)。
集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層落萎、業(yè)務(wù)邏輯層亥啦、數(shù)據(jù)持久層和域模塊層(實(shí)體層)。
其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu)练链,負(fù)責(zé)MVC的分離翔脱,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn)媒鼓,利用Hibernate框架對(duì)持久層提供支持届吁,Spring做管理,管理struts和hibernate隶糕。
3.線程和進(jìn)程的聯(lián)系瓷产、區(qū)別
(轉(zhuǎn)自:https://www.cnblogs.com/jobbible/p/9766649.html)
進(jìn)程是程序的一次執(zhí)行過(guò)程站玄,是一個(gè)動(dòng)態(tài)概念枚驻,是程序在執(zhí)行過(guò)程中分配和管理資源的基本單位,每一個(gè)進(jìn)程都有一個(gè)自己的地址空間株旷,至少有 5 種基本狀態(tài)再登,它們是:初始態(tài),執(zhí)行態(tài)晾剖,等待狀態(tài)锉矢,就緒狀態(tài),終止?fàn)顟B(tài)齿尽;
線程是CPU調(diào)度的基本單位(將CPU分配給符合條件的任務(wù)使用)沽损,它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。
聯(lián)系:
線程是進(jìn)程的一部分循头,一個(gè)線程只能屬于一個(gè)進(jìn)程绵估,而一個(gè)進(jìn)程可以有多個(gè)線程炎疆,但至少有一個(gè)線程。
區(qū)別:
理解它們的差別国裳,我從資源使用的角度出發(fā)形入。(所謂的資源就是計(jì)算機(jī)里的中央處理器,內(nèi)存缝左,文件亿遂,網(wǎng)絡(luò)等等)
根本區(qū)別:進(jìn)程是操作系統(tǒng)資源分配的基本單位,而線程是任務(wù)調(diào)度和執(zhí)行的基本單位
在開(kāi)銷(xiāo)方面:每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間(程序上下文)渺杉,程序之間的切換會(huì)有較大的開(kāi)銷(xiāo)蛇数;線程可以看做輕量級(jí)的進(jìn)程,同一類(lèi)線程共享代碼和數(shù)據(jù)空間是越,每個(gè)線程都有自己獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(PC)苞慢,線程之間切換的開(kāi)銷(xiāo)小。
所處環(huán)境:在操作系統(tǒng)中能同時(shí)運(yùn)行多個(gè)進(jìn)程(程序)英妓;而在同一個(gè)進(jìn)程(程序)中有多個(gè)線程同時(shí)執(zhí)行(通過(guò)CPU調(diào)度挽放,在每個(gè)時(shí)間片中只有一個(gè)線程執(zhí)行)
內(nèi)存分配方面:系統(tǒng)在運(yùn)行的時(shí)候會(huì)為每個(gè)進(jìn)程分配不同的內(nèi)存空間;而對(duì)線程而言蔓纠,除了CPU外辑畦,系統(tǒng)不會(huì)為線程分配內(nèi)存(線程所使用的資源來(lái)自其所屬進(jìn)程的資源),線程組之間只能共享資源腿倚。
包含關(guān)系:沒(méi)有線程的進(jìn)程可以看做是單線程的纯出,如果一個(gè)進(jìn)程內(nèi)有多個(gè)線程,則執(zhí)行過(guò)程不是一條線的敷燎,而是多條線(線程)共同完成的暂筝;線程是進(jìn)程的一部分,所以線程也被稱(chēng)為輕權(quán)進(jìn)程或者輕量級(jí)進(jìn)程硬贯。
4.http協(xié)議(應(yīng)用層協(xié)議)
是什么焕襟?
HTTP是超文本傳輸協(xié)議。使用的是可靠的數(shù)據(jù)傳輸協(xié)議饭豹,在傳輸?shù)倪^(guò)程中不會(huì)被損壞或產(chǎn)生混亂鸵赖。
原理
HTTP是一個(gè)基于TCP/IP通信協(xié)議來(lái)傳遞數(shù)據(jù)(HTML 文件, 圖片文件, 查詢(xún)結(jié)果等)的請(qǐng)求應(yīng)答協(xié)議。
http與https的區(qū)別拄衰?
HTTPS是HTTP協(xié)議的安全版本它褪,HTTP協(xié)議的數(shù)據(jù)傳輸是明文的,是不安全的翘悉,HTTPS使用了SSL/TLS協(xié)議進(jìn)行了加密處理茫打。
GET和POST的區(qū)別
GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包;POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包。
長(zhǎng)的說(shuō):
對(duì)于GET方式的請(qǐng)求老赤,瀏覽器會(huì)把http header和data一并發(fā)送出去饼煞,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù));
而對(duì)于POST诗越,瀏覽器先發(fā)送header砖瞧,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data嚷狞,服務(wù)器響應(yīng)200 ok(返回?cái)?shù)據(jù))块促。
也就是說(shuō),GET只需要汽車(chē)跑一趟就把貨送到了床未,而POST得跑兩趟竭翠,第一趟,先去和服務(wù)器打個(gè)招呼“嗨薇搁,我等下要送一批貨來(lái)斋扰,你們打開(kāi)門(mén)迎接我”,然后再回頭把貨送過(guò)去啃洋。
5.https
HTTPS是一種通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議传货,經(jīng)由HTTP進(jìn)行通信,利用SSL/TLS建立全信道宏娄,加密數(shù)據(jù)包问裕。HTTPS使用的主要目的是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,同時(shí)保護(hù)交換數(shù)據(jù)的隱私與完整性孵坚。
特點(diǎn):
內(nèi)容加密:采用混合加密技術(shù)粮宛,中間者無(wú)法直接查看明文內(nèi)容
驗(yàn)證身份:通過(guò)證書(shū)認(rèn)證客戶(hù)端訪問(wèn)的是自己的服務(wù)器
保護(hù)數(shù)據(jù)完整性:防止傳輸?shù)膬?nèi)容被中間人冒充或者篡改
6.計(jì)算機(jī)網(wǎng)絡(luò) 五層、七層模型
7.數(shù)據(jù)庫(kù)連接池
連接池:在應(yīng)用服務(wù)器啟動(dòng)的時(shí)候建立很多個(gè)數(shù)據(jù)庫(kù)連接并維護(hù)在一個(gè)池中卖宠。連接請(qǐng)求由池中的連接提供巍杈。在連接使用完畢以后,把連接歸還到池中扛伍,以用于滿(mǎn)足將來(lái)更多的請(qǐng)求筷畦。
(轉(zhuǎn)自https://blog.csdn.net/snipercc/article/details/83454097)
當(dāng)應(yīng)用程序需要訪問(wèn)數(shù)據(jù)庫(kù)時(shí),就會(huì)從連接池當(dāng)中取得連接對(duì)象蜒秤,而不是新生成連接對(duì)象汁咏,應(yīng)用程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)結(jié)束時(shí),再將連接對(duì)象返還到連接池當(dāng)中作媚,而不是將連接對(duì)象銷(xiāo)毀。如果應(yīng)用程序的并發(fā)量大帅刊,需要使用的鏈接對(duì)象超過(guò)了連接池剛創(chuàng)建時(shí)的對(duì)象個(gè)數(shù)纸泡,這時(shí)就會(huì)創(chuàng)建新的連接對(duì)象。但是連接池通常都會(huì)配置最大連接數(shù),當(dāng)創(chuàng)建的連接總數(shù)超過(guò)了達(dá)到最大連接數(shù)時(shí)女揭,就不會(huì)再創(chuàng)建新的連接對(duì)象了蚤假。如果連接池當(dāng)中的數(shù)量大于初始創(chuàng)建的連接數(shù),并且有空閑的連接吧兔,那么這些空閑連接在閑置一段時(shí)間之后就會(huì)被銷(xiāo)毀磷仰。初始創(chuàng)建的連接數(shù)量,最大連接數(shù)和連接空閑的時(shí)間都可以通過(guò)配置文件來(lái)指定境蔼。在hibernate和Spring當(dāng)中都可以配置連接池灶平,我最常用的連接池是DBCP和C3P0。
C3P0連接池:一個(gè)開(kāi)源的JDBC連接池
8.排序算法的思想(問(wèn)了快速排序)
(轉(zhuǎn)自https://www.cnblogs.com/liushilin/p/9321481.html)
排序算法的穩(wěn)定性:通俗地講就是能保證排序前兩個(gè)相等的數(shù)據(jù)其在序列中的先后位置順序與排序后它們兩個(gè)先后位置順序相同箍土。
【1】冒泡排序(Bubble Sort)
基本思想:兩兩比較相鄰記錄的關(guān)鍵字逢享,如果反序則交換,直到?jīng)]有反序的記錄為止吴藻。
冒泡排序時(shí)間空間復(fù)雜度及算法穩(wěn)定性:冒泡排序的算法時(shí)間平均復(fù)雜度為 O(n2)瞒爬;空間復(fù)雜度為 O(1);冒泡排序?yàn)榉€(wěn)定排序沟堡。
★【2】快速排序(在同為 O(nlogn) 的幾種排序方法中效率最高)
快速排序思想——分治法
基本思想:
a.先從數(shù)列中取出一個(gè)數(shù)作為基準(zhǔn)數(shù)
b.分區(qū)過(guò)程侧但,將比這個(gè)數(shù)大的數(shù)全放到它的右邊,小于或等于它的數(shù)全放到它的左邊
c.再對(duì)左右區(qū)間重復(fù)第二步航罗,直到各區(qū)間只有一個(gè)數(shù)
★【3】歸并排序
【4】選擇排序
基本思想:在一次遍歷過(guò)程中找到最小元素的角標(biāo)位置俊犯,然后把它放到數(shù)組的首端。
選擇排序的算法時(shí)間平均復(fù)雜度為O(n2)伤哺。
選擇排序空間復(fù)雜度為 O(1)燕侠。
選擇排序?yàn)椴环€(wěn)定排序。
【5】堆排序
【6】插入排序
基本思想:每摸到一張牌就會(huì)跟手里所有的牌比較來(lái)選擇合適的位置插入這張牌立莉。
a.從第一個(gè)元素開(kāi)始绢彤,該元素可以認(rèn)為已經(jīng)被排序
b.取出下一個(gè)元素,在已經(jīng)排序的元素序列中從后向前掃描
c.如果該元素(已排序)大于新元素蜓耻,將該元素移到下一位置
d.重復(fù)步驟 3茫舶,直到找到已排序的元素小于或者等于新元素的位置
e.將新元素插入到該位置后
f.重復(fù)步驟 2~5
a.插入排序的算法時(shí)間平均復(fù)雜度為O(n2)。
b.插入排序空間復(fù)雜度為 O(1)刹淌。
c.插入排序?yàn)榉€(wěn)定排序饶氏。
d.插入排序?qū)τ诮跤行虻臄?shù)組來(lái)說(shuō)效率更高,插入排序可用來(lái)優(yōu)化高級(jí)排序算法