雙非二本找實習前的準備day4

學習目標:

每天2-3到簡單sql(刷完即止),每天復習代碼隨想錄上的題目3道算法(時間充足可以繼續),背誦的八股的問題也在這里記錄了

今日碎碎念:

1)偶爾還是貪玩游戲,但是進度有在往前,八股計劃準備這些,計網,JVM,JUC,Java基礎與集合,MySQL,Redis,Spring和Spring Boot,整體下來,熱門的能準備到70%就開投。

2)明天是java基礎和MySQL以及Redis的八股

3)哎還有科三科四沒考,只能約到3月15號的,剛好一邊準備面試。

4)項目還得優化一兩道,簡歷還會再修改幾次。


力扣刷題

SQL

力扣1075:1075. 項目員工 I

解答思路:

? ? ? ? 1)本題練習到了分組的思路,round函數和avg函數的使用

? ? ? ? 2)通過project_id一分組就可以求得分組后每個組里面的員工以及工作年限,此時使用avg就可以求得平均值了,不清楚的話也可以先通過sum(Employee.experience_years),來驗證工作年限和是否跟預期一樣

# 首先想到的肯定是根據Project_id來進行分組
# 然后去求得當前項目每個員工的工作年限,要實現這一想法就只能是兩表連接查詢了
# 最后求平均AVG,同時使用round來精確小數位數
select Project.project_id,round(avg(Employee.experience_years),2) as average_yearsfrom Project,Employeewhere Project.employee_id = Employee.employee_idgroup by Project.project_id

力扣1667:1667. 修復表中的名字

解答思路:

? ? ? ? 1)本題練習到基礎函數的使用,concat,upper,lower,substring(截取的字段,位置,截取長度)

# 本題就是練習到基礎函數的使用
# 通過substring截取首字母,然后通過UPPER轉化為大寫,LOWER轉化為小寫
# 最后使用concat來連接兩者
select user_id,concat(UPPER(substring(name,1,1)),LOWER(substring(name,2,length(name)))) as namefrom Usersorder by user_id

力扣1179:1179. 重新格式化部門表

解答思路:

? ? ? ? 1)這道題的解題以及代碼實現呢我都是沒見過的,就記錄一下吧

? ? ? ? 2)這類題都是行轉列

? ? ? ? 3)注意寫法:case month when 'Jan' then revenue end的意思是,如果month是Jan的話就返回對應的revenue的值

# 把所有的revenue聚合處理,如果month的值是Jan,那么結果就是revenue,否則忽略。
select id,sum(case month when 'Jan' then revenue end) as Jan_Revenue,sum(case month when 'Feb' then revenue end) as Feb_Revenue,sum(case month when 'Mar' then revenue end) as Mar_Revenue,sum(case month when 'Apr' then revenue end) as Apr_Revenue,sum(case month when 'May' then revenue end) as May_Revenue,sum(case month when 'Jun' then revenue end) as Jun_Revenue,sum(case month when 'Jul' then revenue end) as Jul_Revenue,sum(case month when 'Aug' then revenue end) as Aug_Revenue,sum(case month when 'Sep' then revenue end) as Sep_Revenue,sum(case month when 'Oct' then revenue end) as Oct_Revenue,sum(case month when 'Nov' then revenue end) as Nov_Revenue,sum(case month when 'Dec' then revenue end) as Dec_Revenue
from Department
group by id

算法

力扣19:19. 刪除鏈表的倒數第 N 個結點

解答思路:

? ? ? ? 1)要想一次遍歷就找到末尾,首先我們得使用雙指針

? ? ? ? 2)為什么要使用雙指針

? ? ? ? 3)可以想象這樣一個場景

? ? ? ? 4)兩個人賽跑,甲會一直領先乙100米,當甲到達終點的時候,乙很顯然還剩100米沒到終點,即剩下倒數100米

? ? ? ? 5)這里其實也是一樣的思路了,我們需要定義兩個指針,兩者距離n個節點

? ? ? ? 6)當快指針先到了尾部的時候,說明慢指針距離尾部差n個位置,也就找到了倒數第n個節點

? ? ? ? 7)但是我們要刪除的正是倒數第n個節點,因此我們得找到該節點的前一個節點,即要讓快指針先走n+1個節點

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//要達到n+1,我們得建立虛擬頭節點ListNode dum = new ListNode(-1);ListNode fast = dum;ListNode slow = dum;dum.next = head;//讓fast先走n+1步for(int i = 0;i<=n;i++){fast = fast.next;}//然后一同前進while(fast != null){fast = fast.next;slow = slow.next;}//改變指向即可達到刪除目的slow.next = slow.next.next;return dum.next;}
}


力扣160:160. 相交鏈表

解答思路:

? ? ? ? 雙指針做法

? ? ? ? 1)我自己在做這些鏈表題目的時候,都會畫圖(腦子里也可以),畫圖之后就不一定會那么抽象了

? ? ? ? 2)舉個例子,你認識了一個女生,在認識之前,你倆各自走各自的路,各自活自己的,如果很幸運你倆結婚了(有相交點),那么以后的日子你倆將會陪伴終生(有相交部分,即交點后的元素都是相同的)

? ? ? ? 3)那么我們就需要先找到兩者的長度以及尾部,將兩者尾部對齊,然后移動到同一起點之后去判斷是否有交集即可

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
//簡單來說,就是求兩個鏈表交點節點的指針。
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode curA = headA;ListNode curB = headB;int lenA = 0, lenB = 0;while (curA != null) { // 求鏈表A的長度lenA++;curA = curA.next;}while (curB != null) { // 求鏈表B的長度lenB++;curB = curB.next;}//統計完之后,重置兩個curcurA = headA;curB = headB;//下面這段代碼的目的就是判斷誰更長,因為我們在讓兩者到尾部對齊的時候并沒有去判斷誰短誰長//都是用的A來移動// 讓curA為最長鏈表的頭,lenA為其長度if (lenB > lenA) {//1. swap (lenA, lenB);int tmpLen = lenA;lenA = lenB;lenB = tmpLen;//2. swap (curA, curB);ListNode tmpNode = curA;curA = curB;curB = tmpNode;}// 求長度差int gap = lenA - lenB;// 讓curA和curB在同一起點上(末尾位置對齊)while (gap-- > 0) {curA = curA.next;}// 遍歷curA 和 curB,遇到相同則直接返回while (curA != null) {if (curA == curB) {return curA;}curA = curA.next;curB = curB.next;}return null;}
}

評論區大牛做法
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA == null || headB == null) return null;ListNode pA = headA, pB = headB;while (pA != pB) {pA = pA == null ? headB : pA.next;pB = pB == null ? headA : pB.next;}return pA;
}作者:房建斌學算法
鏈接:https://leetcode.cn/problems/intersection-of-two-linked-lists/solutions/10774/tu-jie-xiang-jiao-lian-biao-by-user7208t/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

力扣142:142. 環形鏈表 II

解答思路:

? ? ? ? 1)本題在判斷入口在哪的證明過程直接去看隨想錄好了,我這里就記錄一下答案

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {//不太擅長寫遞歸,所以使用虛擬頭節點 + 迭代來做public ListNode swapPairs(ListNode head) {ListNode dum = new ListNode(-1);dum.next = head;ListNode cur = dum;ListNode tmp = null;ListNode firstNode = null;ListNode secondNode = null;//要交換必須要保證有兩個節點while(cur.next != null && cur.next.next != null){//先記錄第三個節點tmp = cur.next.next.next;//記錄第一個節點firstNode = cur.next;//記錄第二個節點secondNode = cur.next.next;//交換cur.next = secondNode;secondNode.next = firstNode;firstNode.next = tmp;//指針移動cur = firstNode;}return dum.next;}
}

八股

計算機網絡

TCP

1.TCP三次握手和四次揮手
2.TCP 如何保證傳輸的可靠性?
3.TCP和UDP的區別
4.TCP的三次握手中為什么是三次?為什么不是兩次?四次?
5.TCP的四次揮手中為什么是四次?為什么不是三次?
6.TCP的擁塞控制是怎么實現的?
7.TCP流量控制和擁塞控制的區別
8.TCP如何實現流量控制

HTTP

1.常見狀態碼
2.從輸入URL到頁面展示到底發生了什么
3.GET和POST的區別是什么
4.HTTP和HTTPS有什么區別
5.Cookie和Session有什么區別

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716528.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716528.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716528.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue中的計算屬性和方法有什么區別?

Vue.js是一款流行的JavaScript前端框架&#xff0c;提供了豐富的功能和便捷的開發方式。在Vue中&#xff0c;計算屬性和方法是常用的兩種方式來處理數據和邏輯。但它們之間存在一些區別&#xff0c;本文將詳細介紹Vue中計算屬性和方法的區別&#xff0c;并通過示例代碼加深理解…

183896-00-6,Biotin-C3-PEG3-C3-NH2,可以選擇性降解靶蛋白

您好&#xff0c;歡迎來到新研之家 文章關鍵詞&#xff1a;183896-00-6&#xff0c;Biotin-C3-PEG3-C3-NH2&#xff0c;Biotin-C3-PEG3-C3-amine&#xff0c;生物素-C3-PEG3-C3-胺 一、基本信息 【產品簡介】&#xff1a;Biotin-PEG3-C3-NH2是一種PROTAC linker&#xff0c;…

381. 有線電視網絡(網絡流,最小割,《算法競賽進階指南》)

381. 有線電視網絡 - AcWing題庫 給定一張 n 個點 m 條邊的無向圖&#xff0c;求最少去掉多少個點&#xff0c;可以使圖不連通。 如果不管去掉多少個點&#xff0c;都無法使原圖不連通&#xff0c;則直接返回 n。 輸入格式 輸入包含多組測試數據。 每組數據占一行&#xf…

Python推導式大全與實戰:精通列表、字典、集合和生成器推導式【第115篇—python:推導式】

Python推導式大全與實戰&#xff1a;精通列表、字典、集合和生成器推導式 Python語言以其簡潔、優雅的語法而聞名&#xff0c;其中推導式是其獨特之處之一。推導式是一種在一行代碼中構建數據結構的強大方式&#xff0c;它涵蓋了列表、字典、集合和生成器。本篇博客將全面介紹…

YOLOv8實例分割實戰:ONNX模型轉換及TensorRT部署

課程鏈接&#xff1a;https://edu.csdn.net/course/detail/39320 PyTorch版的YOLOv8支持高性能的實時實例分割。 TensorRT是針對英偉達GPU的加速工具。 ONNX &#xff08;Open Neural Network Exchange&#xff09; 作為一個開放的網絡模型中間表示&#xff08;IR&#xff0…

Redis命令大全

通用命令 KEYS pattern&#xff1a;查找所有符合給定模式&#xff08;pattern&#xff09;的 key。EXISTS key&#xff1a;檢查指定 key 是否存在。TYPE key&#xff1a;返回指定 key 的數據類型。DEL key [key …]&#xff1a;刪除指定的 key。RENAME key newkey&#xff1a;…

spring boot 修復 Spring Framework URL解析不當漏洞(CVE-2024-22243)

漏洞描述 當應用程序使用UriComponentsBuilder來解析外部提供的URL&#xff08;如通過查詢參數&#xff09;并對解析的URL的主機執行驗證檢查時可能容易受到Open重定向攻擊和SSRF攻擊&#xff0c;導致網絡釣魚和內部網絡探測等。 受影響產品或系統 6.1.0 < Spring Framew…

Vue項目的快速搭建

Vue項目的快速搭建 一、下載并安裝node.js二、安裝Vue腳手架三、創建vue項目四、項目啟動五、VS Code下載安裝 一、下載并安裝node.js 首先確保已經安裝了Node.js。如果沒有安裝&#xff0c;可以去官網&#xff08;https://nodejs.org/&#xff09;下載并安裝最新版本的Node.j…

基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示應用

基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示應用 STC12C5A60S2系列1T 8051單片機管腳圖STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹TM1638鍵盤數碼管模塊概述TM1638鍵盤數碼管…

mybatis-傳遞參數的方式

mybatis 傳遞參數的7種方法 在實際開發過程中&#xff0c;增刪改查操作都要涉及到請求參數的傳遞&#xff0c;今天這節就集中講下在mybatis中傳遞參數的7中方法 單個參數的傳遞很簡單沒有什么好將的&#xff0c;這里主要說下多個參數的傳遞 1、第一種方式 匿名參數 順序傳遞…

[electron]窗口 BrowserWindow

優雅的顯示窗口 const {app, BrowserWindow} require(electron);function createMainwindow(){const mainwindow new BrowserWindow({x: 300,y: 400,width: 600,height: 600,});mainwindow.loadFile(index.html); }app.on(ready, ()>{createMainwindow(); });對于這樣的代…

前端發起請求,后端模型需處理很久,怎樣設置前端直接完成請求響應,后端計算完在返回結果給前端?

在這種情況下&#xff0c;可以采用異步處理的方式來解決。具體步驟如下&#xff1a; 前端發起請求&#xff1a;前端向后端發送請求&#xff0c;但是不等待后端處理完成而是立即得到響應。 后端異步處理&#xff1a;后端接收到請求后&#xff0c;不立即進行處理&#xff0c;而是…

Codeforces Round 886 (Div. 4)----->E. Cardboard for Pictures

一&#xff0c;思路&#xff1a; 這題我們可以通過二分 w來直接得到答案&#xff0c;時間復雜度是nlogn的級別&#xff0c;但是這里有個很坑的地方&#xff0c;就是假如你用二分做&#xff0c;會面臨報 long long 的問題&#xff0c;但是問題不大&#xff0c;直接用 unsigned …

題目:金三銀四求職季:如何脫穎而出

題目&#xff1a;金三銀四求職季&#xff1a;如何脫穎而出 引言&#xff1a; 隨著春天的腳步漸近&#xff0c;對于許多程序員來說&#xff0c;一年中最繁忙、最重要的面試季節也隨之而來。金三銀四&#xff0c;即三月和四月&#xff0c;被廣大程序員視為求職的黃金時期。在這兩…

藍橋杯倒計時 41天 - KMP 算法

KMP算法 KMP算法是一種字符串匹配算法&#xff0c;用于匹配模式串P在文本串S中出現的所有位置。 例如S“ababac&#xff0c;P“aba”&#xff0c;那么出現的所有位置是13。 在初學KMP時&#xff0c;我們只需要記住和學會使用模板即可&#xff0c;對其原理只需簡單理解&#xff…

用Socks5代理游戲,繞過“網絡海關”去探險

1. 出海大冒險的開始 在游戲世界&#xff0c;就像在現實生活中一樣&#xff0c;有時我們需要越過海洋去探索未知的世界。但是&#xff0c;網絡上也有一些“海關”&#xff0c;限制我們訪問某些網站或游戲服務器。這就是我們今天要克服的挑戰&#xff01; 2. Socks5代理&#xf…

Django 官網項目 四

內容&#xff1a; 利用HTTP的post方法&#xff0c;更改數據并顯示。 創建detail.html文件&#xff0c;來創建POST內容 修改應用的視圖文件views.py&#xff0c;vote方法 修改應用的視圖文件views.py&#xff0c;results方法。 創建results.html文件。 結果&#xff1a;單…

.NET開源功能強大的串口調試工具

前言 今天大姚給大家分享一款.NET開源的、功能強大的串口調試工具&#xff1a;LLCOM。 工具介紹 LLCOM是一個.NET開源的、功能強大的串口調試工具。支持Lua自動化處理、串口調試、串口監聽、串口曲線、TCP測試、MQTT測試、編碼轉換、亂碼恢復等功能。 功能列表 收發日志清晰…

將SpringBoot項目改造成solon項目

solon項目介紹 官網 Java “生態型”應用開發框架&#xff1a;更快、更小、更簡單。 啟動快 5 &#xff5e; 10 倍&#xff1b;并發高 2&#xff5e; 3 倍&#xff1b; 內存省 1/3 ~ 1/2&#xff1b;打包縮到 1/2 ~ 1/10&#xff1b;同時支持 java8, java11, java17, java21&a…

數據結構學習(二)字符串

字符串 1. 概念 字符串就是特殊的字符數組&#xff0c;字符數組末尾的元素為 ‘\0’。和數組一樣可以使用arr[i]或*(arri)來訪問元素。 無論是用數組保存字符串&#xff08;如&#xff1a;char arr[] "Hello&#xff0c;World";&#xff09;&#xff0c;還是用指針…