当前位置: 首页 > news >正文

小米软开一面

  1. Linux在目录下用命令查找文件。
    which用于查找并显示给定命令的绝对路径,环境变量中PATH参数也可以被查出来。
    寻找特定文件: whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径,该命令只能用于程序名的搜索。
    缓存查找文件: locate 搜索一个数据库/var/lib/mlocatedb,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库。
    遍历文件查找:find 命令可以说是最重要的查找命令了,该命令参数较多。

  2. 用过ps命令没?
    Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

  3. vim命令的使用
    vim是Linux环境下一款功能强大、高度可定制的文本编辑工具。
    vim一般有6种工作模式。
    1)普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。
    2)插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑。
    3)命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行。
    4)可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
    5)替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换。
    6)EX模式:类似于命令行模式,可以一次运行多个命令

  4. 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

  5. linux命令中用作过滤的是?
    grep是一个强大的文本搜索工具。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

  6. 你对面向对象的理解?
    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
    面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。
    C++的三大特征

  7. C++中基本的数据结构
    数组、链表、栈、队列、图、树、哈希等

  8. C++中的逻辑结构
    在这里插入图片描述
    在这里插入图片描述

  9. kmp算法的理解
    在这里插入图片描述
    在这里插入图片描述

  10. 哈夫曼树的理解
    构造思想:每次把权值最小的两棵二叉树合并,合并后树的权值为合并前两棵树权值的和,所以这样子哈夫曼树的结构有点像金字塔,最顶端权值最大。
    在这里插入图片描述
    在这里插入图片描述

  11. 常见的查找算法
    在这里插入图片描述

  12. 哈希函数的思想
    不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(HashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素,其中哈希方法中用到的转换函数称为哈希函数,构造出来的结构叫哈希表(散列表)。
    常见的有以下几种:
    1)直接定制法: 取关键字的某个线性函数为散列地址:Hash(Key)= A*Key + B,其中A和B为常数
    优点: 简单,均匀
    缺点: 需要事先知道关键字的分布情况,如果关键字分布很散(范围很大),就需要浪费很多的空间
    使用范围: 关键字分布范围小且最好连续的情况
    2)除留余数法: 取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key % p,p<=m(p的选择很重要,一般取素数或m)
    优点: 可以将范围很大的关键字都模到一个范围内
    缺点: 对p的选择很重要
    使用范围: 关键字分布不均匀
    3)平方取中法(不常用): 取关键字平方后的中间几位作为散列地址
    4)随机数法(不常用): 选择一随机函数,取关键字作为随机函数的种子生成随机值作为散列地址,通常用于关键字长度不同的场合
    5)折叠法(不常用): 将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址

  13. 在大量的数当中,找到前100个,如何高效的实现。
    见链接

  14. 常见的排序算法?
    见链接

  15. 快速排序的思想,时间复杂度和空间复杂度,是稳定的吗?
    在这里插入图片描述

  16. 手撕算法:查找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;
}

  1. 手撕算法:删除链表中重复的节点
/**
 * 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;
    }
};

相关文章:

  • 创建型模式-抽象工厂模式(三)
  • 美术作品登记版权如何收费?
  • 计算机毕业论文基于Python实现的仓库库存管理系统进销存储系统
  • 人工神经网络 人工智能,人工智能神经网络技术
  • 基于springboot的手办定制销售系统毕业设计源码031800
  • 《每日一题》NO.46:何为WAT/CP/FT?
  • 在Linux下如何实现禁止运行该程序多次?
  • HAIYPRH-PEG-DSPE,DSPE-PEG-HAIYPRH,磷脂-聚乙二醇-靶向肽HAIYPRH试剂供应
  • 发布自己的npm包注意事项
  • Vue的使用2
  • app毕业设计作品安卓毕业设计成品基于Uniapp+SSM实现的智能课堂管理
  • 神经网络试题答案,神经网络考试例题
  • 【论文分享】LibAFL: A Framework to Build Modular and Reusable Fuzzers
  • ESMM论文精读
  • 如何从容的打包上传图片对象--File,Blob,BASE64详解及转换方法
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【译】理解JavaScript:new 关键字
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android 控件背景颜色处理
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Javascript 原型链
  • maven工程打包jar以及java jar命令的classpath使用
  • nodejs调试方法
  • Python语法速览与机器学习开发环境搭建
  • Vue 2.3、2.4 知识点小结
  • 构建工具 - 收藏集 - 掘金
  • 深度解析利用ES6进行Promise封装总结
  • 一些css基础学习笔记
  • 原生Ajax
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 怎么将电脑中的声音录制成WAV格式
  • 正则表达式小结
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 仓管云——企业云erp功能有哪些?
  • 大数据全解:定义、价值及挑战
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​Linux·i2c驱动架构​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​一些不规范的GTID使用场景
  • # Java NIO(一)FileChannel
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)基于IDEA的JAVA基础10
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)母版页和相对路径
  • .bashrc在哪里,alias妙用
  • .dwp和.webpart的区别
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET中的Exception处理(C#)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?