前言: \textcolor{Green}{前言:} 前言:
💞快秋招了,那么这个专栏就专门来记录一下,同时呢整理一下常见面试题
💞部分题目来自自己的面试题,部分题目来自网络整理
学习目标:
- Linux有哪些命令
- 查看Linux的进程
- 算法题:排序链表
面试题:
Linux有那些命令?
文件和目录管理:ls、cd、pwd、mkdir、cp、mv、rm、chmod、chown、touch、cat、more、less、ln等。
系统信息查询:date、uptime、uname、whoami、cal、history、top、ps、df、du、free、netstat等。
用户及权限管理:useradd、userdel、passwd、groupadd、groupdel、su、sudo、visudo等。
网络配置和管理:ifconfig、ping、route、nslookup、telnet、ssh、scp、ftp等。
进程和服务管理:service、systemctl、kill、killall、pgrep、pkill等。
磁盘管理:fdisk、mkfs、fsck、mount、umount、dd、parted等。
包管理:apt-get、yum、dpkg、rpm等。
查看linux的进程?
-
ps 命令
用来列出系统中的进程。常用的选项包括:
-e:显示所有进程
-f:显示完整格式
-u:uesr 显示某个用户的进程 -
top
top 命令用来动态地显示系统中运行的进程信息。按照 CPU 使用率的高低来排序进程,并以交互方式显示。使用该命令可以实时看到进程的CPU占用率、进程名称等信息。 -
htop
htop 命令是 top 命令的增强版,提供了更好的用户体验和交互式界面。功能与 top 相似,界面更加丰富,同时可以通过 htop 来杀死一个进程、改变进程的优先级等。 -
pstree
pstree 命令 可以通过树状图的形式显示进程间的父子关系。可以更好的帮助我们了解进程间的关系,方便查找进程中的异常或者错误。
算法题:
题目来源:
\textcolor{blue}{题目来源: }
题目来源: 148. 排序链表
等级:中等
\textcolor{OrangeRed}{等级:中等}
等级:中等
👉题目描述
给你链表的头结点 head
,请将其按 升序
排列并返回 排序后的链表
。
示例 1:
输入:head = [4,2,1,3]
输出:[1,2,3,4]
示例 2:
输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]
示例 3:
输入:head = []
输出:[]
提示:
- 链表中节点的数目在范围 [ 0 , 5 ∗ 1 0 4 ] 内 链表中节点的数目在范围 [0, 5 * 10^4] 内 链表中节点的数目在范围[0,5∗104]内
- − 1 0 5 < = N o d e . v a l < = 1 0 5 -10^5 <= Node.val <= 10^5 −105<=Node.val<=105
进阶:你可以在 O(n log n)
时间复杂度和常数级空间复杂度下,对链表进行排序吗?
👉代码编写
使用归并算法。首先通过快慢指针找到中点,分别排序,最后将两个 list
合并起来
👉👉方法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 sortList(ListNode head) {
return sortList(head, null);
}
public ListNode sortList(ListNode head, ListNode tail) {
if (head == null) {
return head;
}
if (head.next == tail) {
head.next = null;
return head;
}
// 快慢指针找中点
ListNode slow = head, fast = head;
while (fast != tail) {
slow = slow.next;
fast = fast.next;
if (fast != tail) {
fast = fast.next;
}
}
ListNode mid = slow;
ListNode list1 = sortList(head, mid);
ListNode list2 = sortList(mid, tail);
ListNode sorted = merge(list1, list2);
return sorted;
}
public ListNode merge(ListNode list1, ListNode list2) {
ListNode dummyHead = new ListNode(0);
ListNode temp = dummyHead, temp1 = list1, temp2 = list2;
while (temp1 != null && temp2 != null) {
if (temp1.val <= temp2.val) {
temp.next = temp1;
temp1 = temp1.next;
} else {
temp.next = temp2;
temp2 = temp2.next;
}
temp = temp.next;
}
if (temp1 != null) {
temp.next = temp1;
}
if (temp2 != null) {
temp.next = temp2;
}
return dummyHead.next;
}
}
完成?
今天结束。之前学习的明白了吗? |
- Linux有哪些命令
- 查看Linux的进程
- 算法题:排序链表