字節(jié)跳動(dòng)一面(后端開(kāi)發(fā))
1 說(shuō)一說(shuō)mysql數(shù)據(jù)庫(kù)優(yōu)化
優(yōu)先進(jìn)行索引優(yōu)化澳迫,然后解決慢查詢耘婚,
慢查詢
1 索引沒(méi)起作用烤礁。字段沒(méi)建立索引扯罐,或者是索引沒(méi)有起作用
2 數(shù)據(jù)庫(kù)結(jié)構(gòu)不合理
3 分解關(guān)聯(lián)查詢?將大查詢分成多個(gè)小查詢
4 優(yōu)化limit分頁(yè)
2 怎么找到慢查詢负拟?
去分析慢查詢?nèi)罩荆页雎樵兊膕ql?
看運(yùn)行速度從運(yùn)行時(shí)間短慢來(lái)找出慢查詢的sql
3 索引怎么創(chuàng)建歹河?
?create index 命令并為索引指定它的域
4 索引具體優(yōu)化的方式掩浙?
1 優(yōu)化查詢性能,使用explain關(guān)鍵字
2 mysql是開(kāi)放的 改變內(nèi)部變量索引緩沖區(qū)長(zhǎng)度
手撕代碼
1 重建二叉樹(shù)
輸入某二叉樹(shù)的前序遍歷和中序遍歷的結(jié)果秸歧,請(qǐng)重建出該二叉樹(shù)厨姚。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6}键菱,則重建二叉樹(shù)并返回谬墙。
有思路 沒(méi)打出來(lái)
題目中給了我們先序遍歷和中序遍歷;在二叉樹(shù)的前序遍歷中,第一個(gè)數(shù)字總是樹(shù)的根結(jié)點(diǎn)的值拭抬。但在中序遍歷序列中部默,根結(jié)點(diǎn)的值在序列的中間,左子樹(shù)的結(jié)點(diǎn)的值位于根結(jié)點(diǎn)的值的左邊造虎,而右子樹(shù)的結(jié)點(diǎn)的值位于根結(jié)點(diǎn)的值的右邊傅蹂。因此我們需要掃描中序遍歷序列,才能找到根結(jié)點(diǎn)的值算凿。
題目給出的前序遍歷序列的第一個(gè)數(shù)字1就是根結(jié)點(diǎn)的值份蝴。掃描中序遍歷序列,就能確定根結(jié)點(diǎn)的值的位置氓轰。根據(jù)中序遍歷的特點(diǎn)婚夫,在根結(jié)點(diǎn)的值1前面的3個(gè)數(shù)字都是左子樹(shù)結(jié)點(diǎn)的值,位于1后面的數(shù)字都是右子樹(shù)結(jié)點(diǎn)的值戒努。
由于在中序遍歷序列中请敦,有3個(gè)數(shù)字是左子樹(shù)結(jié)點(diǎn)的值,因此左子樹(shù)總共有3個(gè)左子結(jié)點(diǎn)储玫。同樣侍筛,在前序遍歷的序列中,根結(jié)點(diǎn)后面的3個(gè)數(shù)字就是3個(gè)左子樹(shù)結(jié)點(diǎn)的值撒穷,再后面的所有數(shù)字都是右子樹(shù)結(jié)點(diǎn)的值匣椰。這樣就在前序和中序遍歷的兩個(gè)序列中,分別找到了左右子樹(shù)對(duì)應(yīng)的子序列端礼。
我們已經(jīng)分別找到了左右子樹(shù)的前序和中序遍歷禽笑,我們可以用同樣的方法分別去構(gòu)建左右子樹(shù),即遞歸實(shí)現(xiàn)蛤奥。
附帶詳解https://blog.csdn.net/u013132035/article/details/80519895
二叉搜索樹(shù)的第k個(gè)結(jié)點(diǎn)
限定語(yǔ)言:Javascript_V8佳镜、Python、C++凡桥、Javascript蟀伸、Php、C#缅刽、Java
給定一棵二叉搜索樹(shù)啊掏,請(qǐng)找出其中的第k小的結(jié)點(diǎn)。例如衰猛, (5迟蜜,3,7啡省,2娜睛,4髓霞,6,8)? ? 中微姊,按結(jié)點(diǎn)數(shù)值大小順序第三小結(jié)點(diǎn)的值為4酸茴。
class Solution {
????private int res=0,count=0;
????public int?kthLargest(TreeNode?root, int k) {
????????rec(root,k);
????????return res;
????}
????public void rec(TreeNode?root,int k){
????????if(root.right!=null){
????????????rec(root.right,k);
????????}
????????if(++count==k){
????????????res= root.val;
???????????return;
????????}
?????????if(root.left!=null){
????????????rec(root.left,k);
????????}
????}
}
說(shuō)一下解題思路?
先來(lái)個(gè)層次遍歷二叉樹(shù)兢交,得到所有的節(jié)點(diǎn)的值薪捍,然后排序,取到第k大的節(jié)點(diǎn)的值
這個(gè)只是值配喳,而不是節(jié)點(diǎn)酪穿,
想辦法得到具體的節(jié)點(diǎn)信息,
重新遍歷下該二叉樹(shù)晴裹,
得到節(jié)點(diǎn)值為該值的節(jié)點(diǎn)被济,
然后返回
最后問(wèn)一個(gè)io是什么?
我知道的是影響mysql速度的主要在I/O成本和CPU成本的消耗上
I/o就是數(shù)據(jù)存儲(chǔ)在硬盤上涧团,我們想要進(jìn)行某個(gè)操作需要將其加載到內(nèi)存中只磷,這個(gè)過(guò)程的時(shí)間被稱為I/O成本,我能想起來(lái)的就這些了
你經(jīng)常敲代碼嗎框架怎么樣
最近秋招泌绣,經(jīng)常刷題钮追,敲代碼能力還可以,框架學(xué)了Spring Springmvc Mybatis
你有什么想問(wèn)我的嗎阿迈?
答:我想知道我投遞的是后端開(kāi)發(fā)元媚,現(xiàn)在給我的郵件寫的是ios 安卓開(kāi)發(fā) 我有點(diǎn)疑惑,還有有機(jī)會(huì)轉(zhuǎn)正嗎苗沧?
Ios安卓不了解沒(méi)關(guān)系 無(wú)經(jīng)驗(yàn)也可以 我們會(huì)培訓(xùn) 轉(zhuǎn)正這個(gè)得看實(shí)習(xí)人數(shù)和職位空缺數(shù)刊棕,還是有一些機(jī)會(huì)的
嗯今天面試先到這里等郵件通知
好的老師再見(jiàn)