-
Linux在目录下用命令查找文件。
which用于查找并显示给定命令的绝对路径,环境变量中PATH参数也可以被查出来。
寻找特定文件: whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径,该命令只能用于程序名的搜索。
缓存查找文件: locate 搜索一个数据库/var/lib/mlocatedb,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库。
遍历文件查找:find 命令可以说是最重要的查找命令了,该命令参数较多。 -
用过ps命令没?
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 -
vim命令的使用
vim是Linux环境下一款功能强大、高度可定制的文本编辑工具。
vim一般有6种工作模式。
1)普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。
2)插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑。
3)命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行。
4)可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
5)替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换。
6)EX模式:类似于命令行模式,可以一次运行多个命令 -
Linux系统中用ll命令显示出的如“drwxr-xr-x”,表达的是什么意思?
linux drwxr-xr-x意思如下:第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道。后面的分三个三个来看,即 rwx 、r-x 、r-x。第一个: root :r 是可读,w 是可写,x 是可执行,rwx 意思是可读可写可执行。第二个: 一般用户(用户组):r-x 是可读可执行不可写。第三个: 其他用户,r-x 是可读可执行不可写。
原文:https://blog.csdn.net/weixin_42874157/article/details/89338995 -
linux命令中用作过滤的是?
grep是一个强大的文本搜索工具。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。 -
你对面向对象的理解?
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。
C++的三大特征 -
C++中基本的数据结构
数组、链表、栈、队列、图、树、哈希等 -
C++中的逻辑结构
-
kmp算法的理解
-
哈夫曼树的理解
构造思想:每次把权值最小的两棵二叉树合并,合并后树的权值为合并前两棵树权值的和,所以这样子哈夫曼树的结构有点像金字塔,最顶端权值最大。
-
常见的查找算法
-
哈希函数的思想
不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(HashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素,其中哈希方法中用到的转换函数称为哈希函数,构造出来的结构叫哈希表(散列表)。
常见的有以下几种:
1)直接定制法: 取关键字的某个线性函数为散列地址:Hash(Key)= A*Key + B,其中A和B为常数
优点: 简单,均匀
缺点: 需要事先知道关键字的分布情况,如果关键字分布很散(范围很大),就需要浪费很多的空间
使用范围: 关键字分布范围小且最好连续的情况
2)除留余数法: 取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key % p,p<=m(p的选择很重要,一般取素数或m)
优点: 可以将范围很大的关键字都模到一个范围内
缺点: 对p的选择很重要
使用范围: 关键字分布不均匀
3)平方取中法(不常用): 取关键字平方后的中间几位作为散列地址
4)随机数法(不常用): 选择一随机函数,取关键字作为随机函数的种子生成随机值作为散列地址,通常用于关键字长度不同的场合
5)折叠法(不常用): 将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址 -
在大量的数当中,找到前100个,如何高效的实现。
见链接 -
常见的排序算法?
见链接 -
快速排序的思想,时间复杂度和空间复杂度,是稳定的吗?
-
手撕算法:查找1-n数之间所有数中1的个数,比如“11”这个数表示有两个,10有1个。
#include<iostream>
using namespace std;
int Compute(int n){
int t=0;
while(n){
if(n%10==1){
t++;
}
n/=10;
}
return t;
}
int main() {
int sum=0;
int n;
cin>>n;
for(int i=1;i<=n;i++){
int t=Compute(i);
sum+=t;
}
cout<<sum<<endl;
return 0;
}
- 手撕算法:删除链表中重复的节点
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
// write code here
if(head==nullptr||head->next==NULL)
return head;
ListNode *h=head;
ListNode *g=new ListNode(1);
g->next=head;
ListNode *hp=g;
while(h!=nullptr&&h->next!=NULL){
int item=0;
while(h->val==h->next->val&&h->next!=NULL){
h->next=h->next->next;
item=1;
}
h=h->next;
if(item==1)
hp->next=h;
else
hp=hp->next;
}
return g->next;
}
};