"说一下快排 不用你写,我是安卓的,我不会web前端 我先取第一个再取第二个基准值会怎样 我随便取基准值,平均速度怎样 我取奇数位置做基准值会怎样 我第三轮排序再把他打乱会怎样 要是有重复了,标记一下那些重复的原本是哪个位置的" 全程解剖快排,他有一张纸条事先有准备的,我后面被问懵了,直接挂
点赞 评论

相关推荐

01-23 08:50
 CPU、寄存器、缓存、内存概述- CPU:中央处理器,执行指令的核心组件。- 寄存器:CPU内部的临时存储空间,存放快速访问的数据。- 缓存(Cache):在寄存器和内存之间的高速存储,分为三级(L1、L2、L3),速度和价格依次降低。- 内存:主要存储程序和数据的地方。数据访问流程1. CPU首先在寄存器中查找数据。2. 如果寄存器未命中,则检查缓存。3. 如果缓存未命中,则从内存中获取数据。内存区域- 栈区:  - 存放函数参数和局部变量。  - 由编译器自动分配和释放,效率高,但内存量有限(如iOS中为2M)。- 堆区:  - 通过`new`、`malloc`等动态分配的内存。  - 需要程序员手动释放,可能导致内存泄漏。- 静态区:  - 存放全局变量和静态变量。  - 程序结束时由系统释放。- 常量区:  - 存放常量,不允许修改。  - 代码区:  - 存放函数体的二进制代码。类型说明符- 基本类型:`void`、`char`、`short`、`int`、`long`、`signed`、`unsigned`、`float`、`double`、`struct`、`enum`、`union`。- 存储类型:`extern`、`static`、`register`、`auto`、`typedef`。- 类型限制符:`const`(只读)、`volatile`。变量理解- extern:指示变量在其他文件中定义。- static:  - 限制变量作用域。  - 局部变量存入静态存储区,延长生存周期。- register:将频繁使用的变量放入寄存器以提高效率。- auto:C语言默认存储类型。- typedef:给类型或变量表达式起别名。- const:只读变量。- volatile:  - 防止编译器优化。  - 适用于中断和多线程环境。C程序内存分配- 堆、栈、静态存储区、文件分配区(常量字符串)、程序分配区(二进制代码)。 sizeof与strlen- sizeof:关键字,返回类型或数组的字节大小。- strlen:计算字符串长度,直到遇到`\0`。 函数参数传递- 值传递、引用传递、指针传递、数组地址传递。Const、指针、基本类型组合的意义- const int x:只读变量。- const char *x:指向常量的指针,指针内容可变,指向内容不可变。- char *const x:常量指针,指针内容不可变,指向内容可变。- const char *const x:指针和内容均不可变。 数组与指针- 物理地址:内存单元的真实地址。- 逻辑地址:CPU生成的地址。 Linux进程间通信- 管道(pipe)、信号量、消息队列、信号、共享内存、套接字。 strcpy与memcpy区别- strcpy:复制字符串。- memcpy:复制指定长度的内存内容。 内存泄漏与内存溢出- 内存泄漏:未释放的内存,导致可用内存减少。- 内存溢出:程序请求的内存大于可用内存。 switch的变量类型限制- 允许:整形、布尔、字符、枚举。- 不允许:字符串等非基本类型。 防止头文件重复调用- 使用#ifndef和#pragma once。 实时操作系统- 示例:FreeRTOS、Ucos。 指针数组与数组指针- 指针数组:数组元素为指针。- 数组指针:指向数组的指针。 结构体自增与双重指针自增- 自增从右向左进行。 寄存器的使用- 存储频繁调用的数据,减少内存访问。 获取全局变量与局部变量地址(gdb)- 使用backtrace或bt命令。 进程中的同步与异步- 同步:通过锁实现。- 自旋锁:忙等待,不阻塞线程。- 互斥锁:阻塞线程,等待资源释放。进程与线程的关系与区别- 进程:资源分配的基本单位,包含一个或多个线程。- 线程:进程中的执行单位,最小调度单位。树的遍历(递归与非递归)- 中序遍历:左子树 - 根节点 - 右子树,利用堆栈进行进栈和出栈操作。剩余的大佬面经总结了  链接在下边https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
01-23 09:23
C++的上限非常高,但是分阶段性逐步学习是没有问题的,一步步的学,慢慢领悟,总有一天会熟练掌握的。C++ 语言的学习其实就三个阶段就好了:(1) 入门阶段这个阶段的学习主要是熟悉 C++ 语言的语法知识。在这个阶段要做到理解对象的思想方法,培养自己的编程思维能力。目标是可以开发一些像贪吃蛇这种简单的控制台小程序。(2) 进阶阶段进阶阶段的学习主要是要掌握 C++ 标准模板库(STL)、设计模式、数据结构基础以及 UI 界面开发、数据库开发等高级技能。在这个阶段是要达到可以开发复杂的程序,达到工作中 C++ 开发程序员的能力。(3) 应用阶段这个是实战阶段,要具备一定的综合性应用软件开发能力。这个阶段就是多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。注意!下面都是超极干的干货一、入门阶段入门阶段的学习主要是熟悉 C++ 语言的语法知识。除了基础的变量、常量、关键字、数据类型、运算符、数组、函数、指针、结构体外,还要学习 C++ 的面向对象编程思想、命名空间 namespace、引用、函数扩展、类的封装、构造和析构、继承、多态、异常处理等内容。语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,不然自己容易泄气!1.视频推荐此时同学们应该是毫无基础或者稍微有点 C 语言基础的小白。对于小白来说,不建议上来就看书,因为干看看不懂,容易劝退。可以先从视频教程开始,教材为辅。我当初 C++ 视频是在 b 站看的黑马程序员的 C++ 课程(我不是他们的托儿从 0 到 1 教 C++,三百多个小节,每个小节时间都不是很长,除了个别几个在二十多分钟,其余的基本上都在几分钟到十几分钟之间。每一个阶段都会有相应的小项目教学,对初学者来说是很友好的。看视频的时候不是看看就过去了,编程毕竟是门一门手艺活,孰能生巧。建议一边看,一边将视频中的示例或者小项目教学自己也实现一下,刚开始不会可以照着敲,比只看不动手强一百倍。此外,我最近发现深蓝学院出品的「C++ 基础与深度解析」课程也很不错,深入基础,讲解语法细节。从基础语法讲到 Modern C++,从面向过程开发到新编程范式,对大家学习 C++ 很有帮助。2.书籍推荐入门阶段的书籍为辅,怎么为辅呢?就是视频看完一个阶段,然后就可以去看书上对应阶段的内容,这样看书,一方面看书的时候会很快,容易理解,另一方面可以印证自己在看视频的时候一些不太理解的地方。入门阶段推荐两本书,一本薄的,一本厚的,都是超级经典的书籍。《Essential C++》《Essential C++》是一本内容不多但很实用的 C++ 入门书籍,这本书强调的是快速上手与理解 C++ 编程。主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到 C++ 的函数和结构,也会学习到它们的设计目的和基本原理。《C++ Primer Plus》&《C++ Primer》很多人 C++ 入门的时候会推荐《C++ Primer Plus》,很多人 C++ 入门的时候会推荐《C++ Primer Plus》,我当年先看的也是这本书,当年 C 语言除了学校的教材,我看的就是《C Primer Plus》。这本书怎么说的,讲的超级全面,甚至有点过于全面了,书中的例子和课后习题循序渐进,不夸张的讲所有的知识点可能都囊括进去了,作者可能为了怕大家学不明白,讲的巨细,甚至我感觉都有点啰嗦,造成这本书巨厚,字又巨小,看完感觉近视又加了几度。当时我学习的时候《C++ Primer》还是第 4 版,现在都到第 5 版了!《C++ Primer》堪称 C++ 语法学习的最权威书籍,非常全面地讲解了C++的语法以及C++11的各种新特性,看完之后真的帮助特别大!如果有时间建议至少看两遍以上!时面向 C++ 语言的初学者,是一本很友好的自学教材!而且例程和习题丰富,相信认真读过之后,可以完成 C++ 语言入门这个目标!!如果你在这个阶段觉得差不多了,可以尝试找一些在线的练习题做下,如果你不知道去哪找,那可以去下面这个初学者练习编程巩固语法的绝佳去处。它有专门的 C++ 入门编程练习题,专门练习语法和大家的编程逻辑,从变量、数据类型这些基础语法,到数组、字符串这种复合类型,再到函数、面向对象,以及在 C++ 中很重要的 STL,最后再来点综合练习,差不多 70 多道题,够你练的。除了编程练习以外,如果你想知道你自己的知识点掌握的如何,也可以做一下专项练习。以类似试卷的形式,可以很好的检验自己的学习成果,不管是对之后应对考试,或者应付笔试面试都很有帮助。二、进阶阶段在进阶阶段,你已经对 C++ 有一定的认知了。这个时候我们可以深入学习 C++ 标准模板库(STL)、设计模式、数据结构基础以及 UI 界面开发、数据库开发等高级技能。1.书籍推荐《C++标准程序库》关于 STL,可以先读这本侯捷老师翻译的《C++ 标准程序库》。通过这本书对STL有个基本认识,学会使用 STL。《STL源码剖析》读完 《C++ 标准程序库》,就可以来读这本侯捷老师编写的《STL源码剖析》了。这本书建议必读!这本书讲解了 C++ 底层实现,主要包括 C++ 底层内存管理、各种容器的数据结构实现、常见算法的实现等。可以帮助深入理解C++底层,同时也是对数据结构的复习和巩固。《Effective C++》《Effective C++》讲了 C++ 编程的 55 条准则,提高你的 C++ 编程质量,也是侯捷老师翻译的!这本书有助于梳理在编写 C++ 程序时的一些常见错误和注意事项,也是面试常考的。《深度探索C++对象模型》《深度探索C++对象模型》这本书讲解了C++面向对象特性的底层实现机制。侯捷老师翻译的,看完这本书,对C++面向对象的理解帮助极大,建议必读!2.视频推荐不知道大家注意了没,上面我推荐了四本书,都和一个人有关:侯捷老师。书要么是他翻译的,要么是他写的,C++ 领域 YYDS!同意吧?侯捷老师当然也有讲课,针对书都有对应内容的视频课程!三、应用阶段其实编程语言就是要多练,怎么多练,就是代码量。自己多写,然后多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。面经可以参考c++面经 总结的很详细  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
牛客网
牛客企业服务