字節(jié)跳動一面(后端開發(fā))
1 說一說mysql數(shù)據(jù)庫優(yōu)化
優(yōu)先進行索引優(yōu)化,然后解決慢查詢,
慢查詢
1 索引沒起作用。字段沒建立索引,或者是索引沒有起作用
2 數(shù)據(jù)庫結(jié)構(gòu)不合理
3 分解關(guān)聯(lián)查詢?將大查詢分成多個小查詢
4 優(yōu)化limit分頁
2 怎么找到慢查詢?
去分析慢查詢?nèi)罩?,找出慢查詢的sql?
看運行速度從運行時間短慢來找出慢查詢的sql
3 索引怎么創(chuàng)建?
?create index 命令并為索引指定它的域
4 索引具體優(yōu)化的方式?
1 優(yōu)化查詢性能,使用explain關(guān)鍵字
2 mysql是開放的 改變內(nèi)部變量索引緩沖區(qū)長度
手撕代碼
1 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。
有思路 沒打出來
題目中給了我們先序遍歷和中序遍歷;在二叉樹的前序遍歷中,第一個數(shù)字總是樹的根結(jié)點的值。但在中序遍歷序列中,根結(jié)點的值在序列的中間,左子樹的結(jié)點的值位于根結(jié)點的值的左邊,而右子樹的結(jié)點的值位于根結(jié)點的值的右邊。因此我們需要掃描中序遍歷序列,才能找到根結(jié)點的值。
題目給出的前序遍歷序列的第一個數(shù)字1就是根結(jié)點的值。掃描中序遍歷序列,就能確定根結(jié)點的值的位置。根據(jù)中序遍歷的特點,在根結(jié)點的值1前面的3個數(shù)字都是左子樹結(jié)點的值,位于1后面的數(shù)字都是右子樹結(jié)點的值。
由于在中序遍歷序列中,有3個數(shù)字是左子樹結(jié)點的值,因此左子樹總共有3個左子結(jié)點。同樣,在前序遍歷的序列中,根結(jié)點后面的3個數(shù)字就是3個左子樹結(jié)點的值,再后面的所有數(shù)字都是右子樹結(jié)點的值。這樣就在前序和中序遍歷的兩個序列中,分別找到了左右子樹對應(yīng)的子序列。
我們已經(jīng)分別找到了左右子樹的前序和中序遍歷,我們可以用同樣的方法分別去構(gòu)建左右子樹,即遞歸實現(xiàn)。
附帶詳解https://blog.csdn.net/u013132035/article/details/80519895
二叉搜索樹的第k個結(jié)點
限定語言:Javascript_V8、Python、C++、Javascript、Php、C#、Java
給定一棵二叉搜索樹,請找出其中的第k小的結(jié)點。例如, (5,3,7,2,4,6,8)? ? 中,按結(jié)點數(shù)值大小順序第三小結(jié)點的值為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);
????????}
????}
}
說一下解題思路?
先來個層次遍歷二叉樹,得到所有的節(jié)點的值,然后排序,取到第k大的節(jié)點的值
這個只是值,而不是節(jié)點,
想辦法得到具體的節(jié)點信息,
重新遍歷下該二叉樹,
得到節(jié)點值為該值的節(jié)點,
然后返回
最后問一個io是什么?
我知道的是影響mysql速度的主要在I/O成本和CPU成本的消耗上
I/o就是數(shù)據(jù)存儲在硬盤上,我們想要進行某個操作需要將其加載到內(nèi)存中,這個過程的時間被稱為I/O成本,我能想起來的就這些了
你經(jīng)常敲代碼嗎框架怎么樣
最近秋招,經(jīng)常刷題,敲代碼能力還可以,框架學(xué)了Spring Springmvc Mybatis
你有什么想問我的嗎?
答:我想知道我投遞的是后端開發(fā),現(xiàn)在給我的郵件寫的是ios 安卓開發(fā) 我有點疑惑,還有有機會轉(zhuǎn)正嗎?
Ios安卓不了解沒關(guān)系 無經(jīng)驗也可以 我們會培訓(xùn) 轉(zhuǎn)正這個得看實習(xí)人數(shù)和職位空缺數(shù),還是有一些機會的
嗯今天面試先到這里等郵件通知
好的老師再見