【每日刷题3.17】5道算法+15道面试 - 阿V

今天网易研发笔试,就不练笔试了,写算法很耗费时间,今天主打面试题。加油~

面试题

1. 动态指针(智能指针)

 口头回答:智能指针是一种根据对象生命周期而调动资源的技术,智能指针有shared_ptr、weak_ptr、uniqe_ptr三种。

智能指针是能够利用对象生命周期控制程序资源的技术,可以防止内存泄漏,二次释放等问题。

智能指针有shared_ptr、unique_ptr、weak_ptr

2. 熟练STL吗

口头回答:STL全称为标准模板库,是容器、算法和一些组件的集合,容器包括vector、list、queue、map、set等。

STL的作用:可以更加灵活地处理数据。

3. STL中有什么类?

 五大类组件:算法、容器、迭代器、函数对象、适配器

4.  向量和队列有什么区别?

 口头回答:向量(vector)是用数组实现的,物理上是一串连续的空间,查找的时间复杂度为O(1),而队列使用链表实现的,物理上是随机的地址空间,删除的时间复杂度为O(1)。

vector:和数组类似,拥有一段连续的内存空间,起始地址不变。随机存取时间复杂度O(1)。

List:双向链表实现,内存空间不连续。插入和删除时间复杂度O(1)。

5. 什么是优先队列?

 口头回答:就是大根堆,

优先队列是一种抽象数据类型,优先队列的每个元素都有优先级,优先级高的先出队。 

6.  如果返回堆中最大的元素,要怎么做?

  口头回答:将堆顶元素弹出,将末尾元素放到堆顶,将它与两个子节点比较,与最大交换,以此类推。

 7. 如果堆中某元素的序号是5,那他两个自孩子的序号分别是多少?

   口头回答:分别是2*5和2*5+1,就是10和11。

8. 说一下快排的时间复杂度 

 口头回答:快排是一种不稳定的排序算法,最好的情况是O(nlogn),最坏的情况是O(n2),最坏情况是每次都选到最小或者最大的节点。

快排的平均时间复杂度O(nlogn) 

9.  进程和线程的区别

 口头回答:进程是资源分配的基本单位,线程是调度和执行的最小单位。区别:1. 一个进程拥有多个线程,而一个线程只依附于一个进程。2. 进程拥有独立的地址空间和资源,而该进程所有线程共享空间和资源。3. 进程比线程更健壮,一个进程崩溃不会导致其他进程崩溃,而一个线程崩溃会导致整个进程崩溃。

3. 进程拥有独立的地址空间,进程都是建立在虚拟内存的基础上,而线程没有独立的地址空间。 

5. 进程执行开销大,而线程依附于进程,执行开销小。 

10.  const用法,const函数等;

 口头回答:const修饰普通变量,声明为不可修改,const修饰指针,存在三种,1. const放在最前面,称为指针常量,*p不可变,2. const在中间,称为常量指针,p不可变,3. const两个地方都修饰,*p和p都不可变。const修饰函数,代表整个函数都不可变。

 什么是const?名叫常量限定符,用来限定特定变量,使其不可被编译器修改。

怎么使用const:

1. const修饰基本数据类型,例如const int a = 1;

2. const修饰指针,分为const int* p(指针常量)、int* const p(常量指针)、const int* const p(既修饰常量又修饰指针)。

     const修饰引用,无论怎么修饰都是一样的。

3. const修饰函数形参,const修饰函数返回值,const 修饰成员变量,而const放在函数后面,例如:T method() const{};意义为不能修改所在类的任何变量。

 11. LRU怎么实现的?

口头回答:LRU(最近使用算法),使用双向队列实现,置换页面时,如果双向队列里面有,则将队列里删除,然后放入头部,若没有则删除末尾,再添加到头部。

首先什么是LRU?LRU(Least Recently Used)最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。

如何实现LRU?使用双向链表和哈希表实现LRU算法,

1. 双向链表用于保存key-value,队头的元素表示最近一次被访问的元素,队尾的元素表示最近最久未使用的元素
2. 哈希表提供key到key对应节点在双向链表中的位置的映射

今天网易笔试的打击真的好大,没有一题会的,网易的笔试不是简单的算法题,而是一种程序题,里面不仅包含算法,还包含你对这个程序的逻辑理解。努力了大半年,知道自己现在的实力还是远远不足于大厂,明天开始,白天算法,下午面经,晚上就学习新知识了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZW游戏制造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值