网站如何动态修改主页,修改网站搜索缩略图,wordpress 主题改名,一个网站绑定2个域名学习目标#xff1a;
每天2-3到简单sql#xff08;刷完即止#xff09;#xff0c;每天复习代码随想录上的题目3道算法#xff08;时间充足可以继续#xff09;#xff0c;背诵的八股的问题也在这里记录了
今日碎碎念#xff1a;
1#xff09;偶尔还是贪玩游戏
每天2-3到简单sql刷完即止每天复习代码随想录上的题目3道算法时间充足可以继续背诵的八股的问题也在这里记录了
今日碎碎念
1偶尔还是贪玩游戏但是进度有在往前八股计划准备这些计网JVMJUCJava基础与集合MySQLRedisSpring和Spring Boot整体下来热门的能准备到70%就开投。
2明天是MySQL和Redis的八股部分。
3哎还有科三科四没考只能约到3月15号的刚好一边准备面试。
4项目还得优化一两道简历还会再修改几次。 力扣刷题
SQL
力扣17891789. 员工的直属部门
解答思路 1这道题很有意思啊我觉得也是练习分组和子查询很好的一道题咱看注释就好了
# 值得注意的就是题目中提到的如果只加了一个部门虽然primary_flag是N但是也是直属部门
# 也就是说当count(department_id) 1 的时候表示是直属部门
# 因此需要先找到primary_id为Y的
# 然后按照员工id分组我们得查出哪些只加入了一个部门的员工很明显这是一个子查询select employee_id,department_idfrom Employeewhere primary_flag Yoremployee_id in (select employee_idfrom Employeegroup by employee_idhaving count(department_id) 1) 力扣607607. 销售员
解答思路 1本道题别给那么多张表吓到就好了其实理清楚思路就行反推着写 2要找没有向RED公司销售过的员工名字就得先找到员工ID 3要找到符合的员工ID就得先找到在Orders表里面的和RED的ID有关的员工ID 4要找到Orders表里面的和RED的ID就得先对着RED这个公司名字去找ID
# 多表查询要求我们查出没有向RED公司销售过的员工名字
# 因此得先解决如何查询到向RED公司销售过的员工的名字我这里命名为结果集A
# 但是再大前提就是得先找到RED的com_id是什么
# 然后拿着SalesPerson表中的sales_id来判别即可即不在结果集A中的就是答案
select SalesPerson.namefrom SalesPersonwhere SalesPerson.sales_id not in(select sales_idfrom Orderswhere com_id (select Company.com_idfrom Companywhere Company.name RED))算法
力扣707707. 设计链表
解答思路 1看注释即可
class MyLinkedList {class ListNode{int val;ListNode next;ListNode(){};ListNode(int val){this.val val;}}//记录元素个数int size;//虚拟头节点ListNode head;//初始化链表public MyLinkedList() {size 0;head new ListNode(0);}public int get(int index) {//如果下标无效就返回-1if(index size || index 0){return -1;}//查找指定下标的元素ListNode tmp head;//因为是获取下标的元素超过下标后的无需再查找了//等于是因为我们有虚拟头节点for(int i 0 ; i index ; i){tmp tmp.next;}return tmp.val;}//头插法public void addAtHead(int val) {//调用addAtIndexaddAtIndex(0,val);}//尾插法public void addAtTail(int val) {//调用addAtIndexaddAtIndex(size,val);}//在这里实现头插尾插普通插入public void addAtIndex(int index, int val) {//过滤不符合位置的下标if(index size){return;}//index小于0if(index0){index 0;}//插入后数量增加size;//我们通过前驱节点来插入元素(利用虚拟头节点)ListNode pre this.head;//找到指定位置for(int i 0;i index;i){pre pre.next;}//new新节点ListNode newNode new ListNode(val);//插入节点就是将原来的节点往后移newNode.next pre.next;pre.next newNode;}public void deleteAtIndex(int index) {//过滤无效下标if (index 0 || index size) {return;}//数量1size--;if (index 0) {head head.next;return;}//移动到指定位置ListNode pre head;for(int i 0; i index ; i){pre pre.next;}pre.next pre.next.next;}
}/*** Your MyLinkedList object will be instantiated and called as such:* MyLinkedList obj new MyLinkedList();* int param_1 obj.get(index);* obj.addAtHead(val);* obj.addAtTail(val);* obj.addAtIndex(index,val);* obj.deleteAtIndex(index);*/ 力扣206206. 反转链表
解答思路 双指针做法 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 reverseList(ListNode head) {//这里通过双指针来实现ListNode pre null;ListNode cur head;//涉及到交换这里得再定义中间变量ListNode tmp null;//从原链表来获取节点拼接到新头节点上while(cur ! null){//保存下一个节点tmp cur.next;cur.next pre;//移动指针pre cur;cur tmp;}return pre;}
} 递归做法
// 递归
class Solution {public ListNode reverseList(ListNode head) {return reverse(null, head);}private ListNode reverse(ListNode prev, ListNode cur) {if (cur null) {return prev;}ListNode temp null;temp cur.next;// 先保存下一个节点cur.next prev;// 反转// 更新prev、cur位置// prev cur;// cur temp;return reverse(cur, temp);}
} 力扣2424. 两两交换链表中的节点
解答思路 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有什么区别