天天看點

2021/01/27 位元組跳動測試開發崗 一面總結

1.   自我介紹;

2.   介紹一個最近在做的項目,問了和項目相關的一些問題;參與了哪些開發工作;

問了我最熟悉哪個語言,我說了C。

3.   C語言的記憶體管理,分區,存儲

記憶體中供使用者使用的存儲空間可分為程式區、動态存儲區和靜态存儲區。

程式存儲空間

程式區

全局資料區      ----------靜态存儲區

堆區、棧區      ----------動态存儲區

        程式區是用來存放程式代碼,動态和靜态存儲區用來存放資料,即資料與處理資料的程式是分離的。

        靜态存儲區即全局資料區,存放全局資料和靜态資料;

        動态存儲區又分為堆區和棧區。堆區用來存放程式的動态資料,棧區用來存放程式的局部資料,即各個函數中的資料。

       動态存儲是指存儲一些資料的存儲單元可在程式運作的不同時間配置設定給不同的資料;而靜态存儲是指存儲單元是在程式運作的整個過程中固定地配置設定給某些資料。

4.   static的作用:

static的最主要功能是隐藏,其次因為static變量存放在靜态存儲區,是以它具備持久性和預設值0。 

參考:https://www.cnblogs.com/dc10101/archive/2007/08/22/865556.html

C++的static性質:https://www.cnblogs.com/jiangyu0331/p/11643814.html

5. const的作用:

常量一旦被建立後其值就不能再改變,常量必須在定義的同時指派(初始化),後面的任何指派行為都将引發錯誤(它的值在整個作用域中都保持固定)。

可參考:https://blog.csdn.net/u010159842/article/details/51364221

6.怎麼避免記憶體洩漏?

new 和 malloc 的一定要一一對應的delete和free掉;

7.什麼是面向對象,多态是什麼?

把資料及對資料的操作方法放在一起,作為一個互相依存的整體——對象。

特點:

①封裝

隐藏對象的屬性和實作細節,僅對外提供公共通路方式,将變化隔離,便于使用,提高複用性和安全性。

②繼承

提高代碼複用性;繼承是多态的前提。

③多态

父類或接口定義的引用變量可以指向子類或具體實作類的執行個體對象。提高了程式的拓展性。

(允許将子類類型的指針指派給父類類型的指針/父類型的引用指向子類型的對象)。

有兩個好處:

1)應用程式不必為每一個派生類編寫功能調用,隻需要對抽象基類進行處理即可。大大提高程式的可複用性。//繼承 

2)派生類的功能可以被基類的方法或引用變量所調用,這叫向後相容,可以提高可擴充性和可維護性。 //多态的真正作用,

8.sql常用的索引

主鍵、唯一、普通、全文、組合

https://blog.csdn.net/weixin_46163590/article/details/106047978

9.事務的四個特點:

所謂事務就是針對資料庫的一組操作,它可以由一條或者多條SQL語句組成,同一個事務的操作具備同步的特點,如果其中有一條語句不能執行的話,那麼所有的語句都不會執行,也就是說,事務中的語句要麼都執行,要麼都不執行。

事務操作具有嚴格的定義,它必須滿足ACID:

ACID,指資料庫事務正确執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一緻性(Consistency)、隔離性(Isolation)、持久性(Durability)。

(1)原子性: 原子性是指事務是一個不可再分割的工作機關,事務中的操作要麼都發生,要麼都不發生。

(2)一緻性:一緻性是指在事務開始之前和事務結束以後,資料庫的完整性限制沒有被破壞。這是說資料庫事務不能破壞關系資料的完整性以及業務邏輯上的一緻性。

(3)隔離性:隔離性是指并發的事務是互相隔離的。即一個事務内部的操作及正在操作的資料必須封鎖起來,不被企圖進行修改的事務看到 。

(4)持久性:持久性是指在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,并不會被復原。 即使出現了任何事故比如斷電等,事務一旦送出,則持久化儲存在資料庫中。

參考:https://www.cnblogs.com/hebao0514/p/5490698.html

9.左連接配接與右連接配接

左連接配接:left join 左邊的表為主表,查詢結果為主表的全部内容,若從表有和主表比對的,則顯示比對的行,若沒有比對,則顯示NULL;

右連接配接:right join 右邊的表為主表,和左連接配接實作的功能相同。

10.sql 語句:

姓名   課程    分數

張三    國文    81

張三    數學    70

張三    英語     80

李四   ...          ...

...

查詢:每個課程都>80分的學生姓名

法一:select name from students where score>80 group by name having count(*)=3;

法二:select name from students group by name having min(score)>80;

法三:select distinct name from students where name not in(

select distinct name from students where score<80);

11.矩陣順時針旋轉90°

輸入:

1   2    3    4

5   6    7    8

9   10   11   12

13   14   15  16

輸出:

13   9   5    1

14   10    6    2

......

解:先轉置再做列交換。

繼續閱讀