Mysql中(1),2021最新Java高頻精選面試題講解

不掉發的小易 2021-09-19 18:38:27 阅读数:119

mysql 最新 java

4.數據量大的話,容易把CPU打滿 ,如果你删除數據量很大時,不加 limit限制一下記錄數,容易把cpu打滿,導致越删越慢的。

[](

)3. 設計錶的時候,所有錶和字段都添加相應的注釋(SQL規範優雅)


這個好習慣一定要養成啦,設計數據庫錶的時候,所有錶和字段都添加相應的注釋,後面更容易維護。

正例:


CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵Id',
`name` varchar(255) DEFAULT NULL COMMENT '賬戶名',
`balance` int(11) DEFAULT NULL COMMENT '餘額',
`create_time` datetime NOT NULL COMMENT '創建時間',
`update_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='賬戶錶';

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

反例:


CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`balance` int(11) DEFAULT NULL,
`create_time` datetime NOT NULL ,
`update_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8;

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

[](

)4. SQL書寫格式,關鍵字大小保持一致,使用縮進。(SQL規範優雅)


正例:


SELECT stu.name, sum(stu.score)
FROM Student stu
WHERE stu.classNo = '1班'
GROUP BY stu.name

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

反例:


SELECT stu.name, sum(stu.score) from Student stu WHERE stu.classNo = '1班' group by stu.name.

  • 1.
  • 2.
  • 3.

顯然,統一關鍵字大小寫一致,使用縮進對齊,會使你的SQL看起來更優雅~

[](

)5. INSERT語句標明對應的字段名稱(SQL規範優雅)


反例:


insert into Student values ('666','撿田螺的小男孩','100');

  • 1.
  • 2.
  • 3.

正例:


insert into Student(student_id,name,score) values ('666','撿田螺的小男孩','100');

  • 1.
  • 2.
  • 3.

[](

)6. 變更SQL操作先在測試環境執行,寫明詳細的操作步驟以及回滾方案,並在上生產前review。(SQL後悔藥)


  • 變更SQL操作先在測試環境測試,避免有語法錯誤就放到生產上了。

  • 變更Sql操作需要寫明詳細操作步驟,尤其有依賴關系的時候,如:先修改錶結構再補充對應的數據。

  • 變更Sql操作有回滾方案,並在上生產前,review對應變更SQL。

[](

)7.設計數據庫錶的時候,加上三個字段:主鍵,create_time,update_time。(SQL規範優雅)


反例:


CREATE TABLE `account` (
`name` varchar(255) DEFAULT NULL COMMENT '賬戶名',
`balance` int(11) DEFAULT NULL COMMENT '餘額',
) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='賬戶錶';

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

正例:


CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵Id',
`name` varchar(255) DEFAULT NULL COMMENT '賬戶名',
`balance` int(11) DEFAULT NULL COMMENT '餘額',
`create_time` datetime NOT NULL COMMENT '創建時間',
`update_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='賬戶錶';

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

理由:

  • 主鍵一定要加上的,沒有主鍵的錶是沒有靈魂的

  • 創建時間和更新時間的話,還是建議加上吧,詳細審計、跟踪記錄,都是有用的。

阿裏開發手册也提到這個點,如圖

Mysql中(1),2021最新Java高頻精選面試題講解_程序員

[](

)8. 寫完SQL語句,檢查where,order by,group by後面的列,多錶關聯的列是否已加索引,優先考慮組合索引。(SQL性能優化)


反例:

Mysql中(1),2021最新Java高頻精選面試題講解_後端_02

正例:


添加索引
alter table user add index idx_address_age (address,age)

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Mysql中(1),2021最新Java高頻精選面試題講解_Java_03

[](

)9.修改或删除重要數據前,要先備份,先備份,先備份(SQL後悔藥)


如果要修改或删除數據,在執行SQL前一定要先備份要修改的數據,萬一誤操作,還能吃口後悔藥~

[](

)10. where後面的字段,留意其數據類型的隱式轉換(SQL性能優化)


反例:


//userid 是varchar字符串類型
select * from user where userid =123;

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Mysql中(1),2021最新Java高頻精選面試題講解_Java_04

正例:


# 總結
三個工作日收到了offer,頭條面試體驗還是很棒的,這次的頭條面試好像每面技術都問了我算法,然後就是中間件、MySQL、Redis、Kafka、網絡等等。
**[CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】](https://ali1024.coding.net/public/P7/Java/git)**
* **第一個是算法**
關於算法,我覺得最好的是刷題,作死的刷的,多做多練習,加上自己的理解,還是比較容易拿下的。
而且,**我貌似是將《算法刷題LeetCode中文版》、《算法的樂趣》大概都過了一遍,尤其是這本**
**《算法刷題LeetCode中文版》總共有15個章節:編程技巧、線性錶、字符串、棧和隊列、樹、排序、查找、暴力枚舉法、廣度優先搜索、深度優先搜索、分治法、貪心法、動態規劃、圖、細節實現題**
![Mysql中(1),2021最新Java高頻精選面試題講解_Java_05](https://s7.51cto.com/images/20210919/1632047334162730.jpg)
**《算法的樂趣》共有23個章節:**
![Mysql中(1),2021最新Java高頻精選面試題講解_程序員_06](https://s5.51cto.com/images/20210919/1632047334142348.jpg)
![Mysql中(1),2021最新Java高頻精選面試題講解_後端_07](https://s4.51cto.com/images/20210919/1632047335930164.jpg)
* **第二個是Redis、MySQL、kafka(給大家看下我都有哪些複習筆記)**
基本上都是面試真題解析、筆記和學習大綱圖,感覺複習也就需要這些吧(個人意見)
![Mysql中(1),2021最新Java高頻精選面試題講解_程序員_08](https://s3.51cto.com/images/20210919/1632047335499246.jpg)
* **第三個是網絡(給大家看一本我之前得到的《JAVA核心知識整理》包括30個章節分類,這本283頁的JAVA核心知識整理還是很不錯的,一次性總結了30個分享的大知識點)**
![Mysql中(1),2021最新Java高頻精選面試題講解_Java_09](https://s2.51cto.com/images/20210919/1632047336254518.jpg)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
版权声明:本文为[不掉發的小易]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919183826586k.html