【每日刷题3.8】10道算法+10道面试 - 阿V

新的一天开始啦,加油~

算法题(英雄哥九日集训-第二天)

1. 求1+2+…+n

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

 

这一题貌似使用等差数列求和公式的那一条公式就行,对哦,题目不给使用。还以为很简单,没想到,运用到了逻辑运算符的短板效应,第一次接触,长知识了。


代码详情:

class Solution {
public:
    int ans = 0;
    int sumNums(int n) {
        bool x = (n > 1) && sumNums(n - 1); //当&&左边为false时就不会触发后一个
        ans += n;
        return ans;
    }
};

通过情况:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

 2. 2 的幂

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16 现在这种题一看,就大概知道是使用位运算符,2的幂转成二进制都是第一个数字为一其他都为零,类似,2的二进制10,4的二进制100,利用这个性质,将它与减一后进行与位运算,结果为零就是正确。


代码详情:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        return n > 0 && (n & (n-1)) == 0;
    }
};

 通过情况:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

 3. 3 的幂

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16 还以为跟上一题一样,结果想了好久,都没想出来,看题解,使用了普通的数学运算,或是取巧的方法,这里用取巧的方法进行解题,int是4字节,最大的3的幂是1162261467,所以用这个数取余n等于零就代表,n是3的幂。


代码详情:

class Solution {
public:
    bool isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
};

 通过情况:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

4.  4的幂

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16 我4的幂就是2的幂,直接用2的幂的代码,发现不对,知道2的幂不一定是4的幂,还有再多一个判断条件才行。


代码详情:

class Solution {
public:
    bool isPowerOfFour(int n) {
        return n > 0 && (n & (n - 1)) == 0 && n % 3 == 1;
    }
};

 通过情况:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

 

面试题

1. 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{};意义为不能修改所在类的任何变量。

2. epoll、select、poll区别? / 什么是IO多路复用? / epoll 水平触发(LT)与 边缘触发(ET)的区别?

 啥是epoll、select、poll?首先,要先解释啥是IO多路复用?一种同步IO模型,实现一个线程可以监视多个文件句柄。多路指网络连接,复用指同一个线程。

那为什么需要IO多路复用?这就要讲BIO(同步阻塞)、(同步非阻塞)NIO这两种实现方式了。

BIO(同步阻塞):服务端采用单线程,无法并发处理,采用多线程,占用大量资源。

NIO(同步非阻塞):服务端收到请求后,加入fds集合,每次轮询fds集合recv(非阻塞)数据,没有数据立即返回错误,但每次轮询会很浪费cpu。

以上两种存在一定的问题,从而产生IO多路复用。

IO多路复用:服务端采用单线程通过select/epoll等系统调用获取fd(文件描述符)列表,遍历有事件的fd进行accept/recv/send,使其能支持更多的并发连接请求。

所以epoll、select、poll是IO多路复用的系统调用。它们之间的区别:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVum4pl_pmL9W,size_20,color_FFFFFF,t_70,g_se,x_16

epoll LT 与 ET模式:

LT是默认模式,而ET是高速模式,LT模式下,只有这个fd有数据可读,每次epoll_wait都返回它的事件。ET模式下,只会提示一次,直到下次再有数据流之前都不会再提示。

 

又到了23点30分,今天又松懈了,看了网易N星计划宣讲会,更加加大了我进网易的决心,决定要收收心,努力学习!!!明天加油~

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZZW游戏制造

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

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

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

打赏作者

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

抵扣说明:

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

余额充值