個人面經整理跟誰學

                        跟誰學面經
  1. 微信點贊測試
    (1)功能測試
    是否可以點贊
    是否可以取消點贊
    多次點贊是什麼情況
    多人點贊順序是否按照時間順序排列
    點贊後是否顯示頭像和名稱
    點贊後是否能進行評論
    點贊後退出再進入時是否還存在點贊消息
    多用戶點贊再次打開朋友圈是否可以按照順序看誰點讚了
    點贊之後相同好友是否收到點贊信息
    相同好友收到的點贊信息是否按照時間排列
    相同好友的點贊是否顯示頭像和名稱
    (2)兼容性測試
    不同手機端和電腦端是否可以點贊和取消
    不同移動端是否可以點贊和取消
    (3)性能測試
    弱網點贊
    網絡斷開是否可以點贊
    用戶點贊後多長時間可以看到點贊成功,還有取消時間
    多用戶同時點贊是否可以完全收到提示信息
    (4)安全性測試
    點贊是否會泄漏用戶信息

  2. 數據庫查詢語句
    Select語句

  3. 平時怎麼學習
    如果有時間會拿專業的書和視頻配合學習,如果時間很趕的話就會看網上的文檔、經驗貼、技術博客來學習

  4. 手寫快排
    在這裏插入圖片描述

  5. 數據庫逆序查詢
    Select * from table order by filename desc.
    (desc是逆序查詢)

  6. 鏈表查詢

  7. 排序
    直接插入排序

void InsertionSort(vector<int> &data){
    for(int i = 1;i<data.size();++i){
        int tmp = data[i];
        for(int j = i;j>0&&tmp<data[j-1];--j){
            data[j]=data[j-1]; //向後覆蓋
        }
        data[j]=tmp;
    }
}

簡單選擇排序

void SelectSort(vector<int> &data){
    for(int i = 0;i<n-1;++i){
        int min = i;
        for(int j = i;j<n;j++){
            if(data[j]<data[min])
                min = j;
        }
        if(i!=min) swap(data[i],data[min]);
    }
}
  1. 手撕歸併排序
    在這裏插入圖片描述

  2. 數組查重
    在這裏插入圖片描述

  3. 字符串最長連續子串

  4. 如果你是一個小組的領導,和另一個小組合作一個任務,然而另外一個小組的小組長去幹別的任務了,會影響到你們組的進度,你該咋辦
    與那個小組長協商,讓他們組選出一個熟悉業務的代理小組長,和代理小組長交涉。主要思想就是讓對方組除了小組長之外的人一起完成任務。

  5. 如果你是個領導,你的下屬說不想做枯燥乏味的搬磚工作了,想幹別的活,你該咋辦(一下子感覺自己走錯片場)

  6. 瞭解一下他到底想做什麼。告訴他,看別人的工作老是覺得這是光鮮亮麗、多姿多彩的,但其實不深入瞭解根本不知道那個工作到底是什麼樣子,想換的工作只是處於想象之中。

  7. 如果他沒有特定的想做的工作,我就會讓他多思考一下自己到底想要什麼,大家都是成年人,除了興趣之外還要考慮生活,考慮很多東西,不能憑一時衝動就做出一些不一定正確的決定。況且,我認爲任何工作做一段時間失去新鮮感可能都會有一個疲倦期,多做一些相關的有趣的事情,比如自己去實現一些有趣的項目啊,找到成就感,就不會對自己的事業那麼排斥了。

  8. 如果他真的有什麼遠大理想,畢生追求,自己想得很清楚的話,我覺得應該鼓勵他去追求。

  9. 你有男朋友嗎,他是哪個學校的,幹啥的,他找實習了嗎,以後你倆想去哪發展呀(一下子感覺到了來自面試官的母愛)!!!

  10. 索引種類
    普通索引,加速查詢
    唯一索引,加速查詢+列值唯一(可以有null)
    主鍵索引,加速查詢+列值唯一(不可以有null)+表中只有一個
    組合索引,多列值組成一個索引,專門用於組合搜索,效率大於索引合併
    全文索引,對文本內容進行分詞搜索
    索引類型:
    Fulltext,全文索引。只有char、varchar、text列可以建立全文索引。
    Hash,類似於鍵值對,高效
    Btree,默認和最常用的索引類型
    Rtree,少用,優勢在於範圍查找。存儲引擎MyISAM、BDb、innoDb、NDb

  11. 建立索引應該注意什麼
    把該字段按照一定的方式排序,建立索引。
    注意:

  12. 如果對權標都要掃描,那麼建立索引沒有意義。

  13. 對非唯一字段,比如性別,增加索引沒有意義

  14. 對於記錄比較少的表,如果建立索引就要佔用很多空間,不會帶來速度優化反而浪費存儲空間。 對於update/insert/delete執行,字段的索引都要重新計算

  15. sql怎麼優化

  16. 數據庫設計方面
    表與表的業務聯繫要明確
    表字段儘量使用數值型,數值型字段在mysql底層應用性能比string類型好
    建立合理的索引

  17. Sql語句優化

  18. 合理使用表連接(不超過5個表連接)
    考慮使用臨時表或表變量存放中間結果
    視圖嵌套不要過深(不超過2個)
    表連接得越多性能越差
    最好將連接拆分成若干個過程逐一執行
    外連接效果差,必須對左右表都進行掃描
    儘量使用inner join查詢(outer join意味着必須對左表或右表查詢所有行)

  19. 合理使用索引,
    通配符中like的使用 select id,name from userinfo where name like ‘name%’這樣是會使用索引的,而用‘%name%‘或者‘%name‘的形式是會全表掃描的。(通配符使用在首位就無法用索引)
    Where子句左邊不要用函數、算數運算、其他表達式運算。用了就不會用索引了
    Where子句不要用is null, is not null判斷,用了就不是索引了
    避免在where子句中使用!=或者< >操作符
    少用in和not in
    少用or,用union代替
    不要建立太多索引,索引會提高select的效率,但是會降低insert和update的效率
    Select … from … on … where … group by…having …order by…limit…
    On where having,儘量在where過濾,比having早
    Not in 效率低用not exists代替
    數據量過大的時候少用select*
    讀寫分離和分庫分表

  20. 索引數據結構,爲什麼用B+樹
    首先,B+樹的一個結點就是一頁,磁盤讀取以頁爲單位,減少磁盤io次數,會使查詢效率提高(局部性原理)。B+樹的內結點不存數據,只存索引。

  21. 聚集索引和非聚集索引
    聚集索引通過索引可以查到需要查找的數據,而非聚集索引可以查找到對應的主鍵值,再通過主鍵的值查找到需要的數據

    1. JVM分區


      本地方法棧
      程序計數器
      方法區
  22. 垃圾回收算法
    標記清除算法:標記清除過程效率不高,清除後產生不連續的內部碎片
    複製算法:分成兩塊,每次只對其中一塊內存進行回收,效率高。最大可分配內存少了一半。
    標記整理算法:讓所有對象都移向一邊,然後清理到端邊界以外的內存。
    分代收集:根據對象的存活週期將內存劃分爲幾塊。分爲新生代和老年代。新生代用複製算法,老年代用標記清除算法或者標記整理算法。
    增量算法:垃圾收集線程和應用程序線程交替執行,直到垃圾收集完成。

  23. volatile作用
    用volatile修飾的變量,線程在每次使用變量時都會讀取變量修改後的值,不進行編譯器優化,volatile變量隨時可能變化,每次從地址中讀取。

  24. get和post請求的區別和用法
    區別:

  25. get在瀏覽器回退是無害的,post會再次提交請求

  26. get請求會被瀏覽器主動cache,post不會

  27. get請求只支持url編碼,post請求支持多種編碼

  28. get請求參數會被完整保存在瀏覽器歷史記錄,post參數不會被保留

  29. get請求在url中傳送的參數有長度限制,post沒有長度限制

  30. get只接受ascii字符,post沒有限制

  31. get更不安全,參數直接暴露在url

  32. get參數通過url傳遞,post放在request body

post更安全
post能發送的數據量更大
post能發送更多的數據類型
post比get慢
post請求產生兩個tcp包,get請求產生一個tcp包

get是從服務器獲取數據,post是給服務器傳送數據
數據查詢時建議用get,數據添加、修改、刪除時建議用post
包含機密的話用post更好

  1. 從技術層面講講在線教育和抖音這種短視頻平臺的區別

  2. 最長的無重複子字符串 https://leetcode.com/problems/longest-substring-without-repeating-characters

  3. 10萬個數找出最大的不重複的10個
    先hash去重,用最小堆,不斷往最小堆中插入數字,當堆的元素超過10個時,就將堆頂的元素彈出。最後中序遍歷小頂堆是有序的最大不重複的十個數

  4. 重載和重寫
    重載:一個類中多個方法有相同的名字,方法的參數列表不同。是多態性的體現。
    重寫:重寫是針對子類對父類的重寫,有相同的方法名,參數列表,返回值

  5. Java面向對象的特點
    封裝:根據職能將屬性和方法封裝在一個抽象的類中,用類創建對象,用對象調用方法,對象方法的細節都封裝在類中。
    繼承:實現代碼重用,相同的代碼不需要重複寫。子類擁有父類的屬性和方法。
    多態:由於子類重寫了父類的方法,用父類的引用指向子類的對象,調用方法時進行動態綁定。提高可擴展可維護性。

  6. mysql的存儲引擎,區別
    myisam:不支持事務,不支持外鍵
    innodb:支持事務

  7. 複合索引的查找規則

  8. 表中(id,Name) ,根據name查找,怎麼個查找過程

  9. TCPIP哪層t
    Tcp傳輸層,ip網絡層

  10. TCP UDP區別,聊天爲什麼UDP。

  11. 1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接

  12. 2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保 證可靠交付

  13. 3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的,應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)

  14. 4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信

  15. 5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節

  16. 6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道

  17. 線程間通信
    Wait/notify 等待
    Volatile 內存共享
    阻塞隊列

  18. 進程間通信
    管道
    消息隊列
    信號量
    共享內存

  19. 堆區和棧區的區別

  20. 棧是自動分配,堆是人爲分配

  21. 棧獲得空間較小,堆獲得空間較大

  22. 棧分配的速度較快,堆分配的速度較慢

  23. 棧向下生長,堆向上生長

  24. 同步異步
    同步:程序1調用程序2時,程序1停下來等待,直到程序2完成回到程序1,程序1才繼續執行下去
    異步:程序1調用程序2,程序1繼續執行自己的下一個動作,不受程序2的影響

  25. 什麼是野指針
    指向不可知位置的指針
    危害:觸發段錯誤
    避免:定義指針時初始化爲null;使用完之後賦值爲null

  26. 常見的hash算法
    MD4,MD5

  27. hash表滿了,效率變低之後,你想怎樣處理?
    虛函數原理
    被virtual關鍵字修飾的成員函數就是虛函數。主要是爲了實現多態。
    實現原理:虛函數表+虛表指針。每個類使用一個虛函數表,每個類對象使用一個虛表指針

  28. malloc和new
    malloc是庫函數,new是運算符
    new底層是用malloc實現的,但是new更加智能,因爲會自動執行構造函數和析構函數
    new返回指定類型的指針,malloc返回void*

  29. 指針和引用
    指針是地址,引用是別名
    指針可以爲空,引用不能爲空
    指針可以有多級,引用只能有一級
    指針可以改變指向,引用不能改變
    有const指針,沒有const引用
    Sizeof指針是指針的大小,sizeof引用時對象的大小

  30. 判斷一個點在不在三角形內部(這種題我居然也想了快三分鐘。。。我真是個智障。。)
    用double算面積相等只能跑出百分之五十多
    3次握手,4次揮手
    在這裏插入圖片描述
    在這裏插入圖片描述

48.http狀態碼(gg)
100-199請求收到繼續處理
200-299成功
300-399資源重定向
400-499客戶端請求出錯
500-599服務器端出錯
200響應成功
302跳轉,重定向
400客戶端語法錯誤
403服務器拒絕提供服務
404資源不存在
505服務器內部錯誤

score (id, 科目, 分數, 學生id) 學生表(學生id,姓名) 求數學排名前三的學生id,及分數。
49. 編程是斐波拉契數列和反轉整數
在這裏插入圖片描述
在這裏插入圖片描述
50. 數學問題(不知道怎麼就考這個,,):時鐘,時針指向1,分針指向0,一點整時,時針和分針夾角多少度。然後當分針越過時針,夾角再爲30度時,時間是多少?(感覺像是在考編程。。可以理解爲下次30度在什麼時間)

30度

  1. 測試的職責
    搭建測試環境、撰寫測試用例、執行測試用例、寫測試計劃和測試報告、測試、提交bug表單跟蹤bug修改情況、執行自動化測試、執行性能測試

非遞歸遍歷二叉樹
遞歸
在這裏插入圖片描述

修飾符作用範圍
在這裏插入圖片描述

時間複雜度
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章