双非二本找实习前的准备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.mzph.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;还是用指针…