liudw-0215

大厂虐我千百遍 我待大厂如初见

  每一次去大厂面试都被虐地很惨,但收获还是很多的,分享出来,希望对你们很有帮助!!!

  笔试

  电话铃声响起,拿起电话,简单问了下有木有时间,然后说加微信沟通,简单问了下业务,然后出了一道笔试题,笔试题很有特色,只有一张图片,如下:

  简单介绍下题目吧:就是用三个线程打印出图片中的效果,(注:C++没有协程,python/go有,面的是C++,所以用c++实现的);要求:25分钟运行出来并给出源码

  下面是我的代码,用了C++11的特性,供大家参考:

  

#include <iostream>
#include <thread>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
int ready = 0;
static int point_num = 1;  
void PrintString_1()
{
        std::unique_lock<std::mutex> lk(mtx);
        int cnt = 0;
        while(cnt<10)
        {
                while(ready != 0)
                        cv.wait(lk);
                std::cout<<"1";
                ready = 1;
                cnt++;
                cv.notify_all();
        }
}

void PrintString_2()
{
        std::unique_lock<std::mutex> lk(mtx);
        int cnt = 0;
        while(cnt<10)
        {
                while(ready != 1)
                        cv.wait(lk);
                std::cout<<"2";
                ready = 2;
                cnt++;
                cv.notify_all();
        }
}

void PrintString_3()
{
        std::unique_lock<std::mutex> lk(mtx);
        int cnt = 0;
        while(cnt<10)
        {
                while(ready != 2)
                        cv.wait(lk);
                std::cout<<"1";
                for(int i=0;i<point_num;i++)
                {
                        std::cout<<".";
                }
                ready = 0;
                cnt++;
                point_num++;
                cv.notify_all();
        }
}

int main()
{
        std::thread  t1(PrintString_1);
        std::thread  t2(PrintString_2);
        std::thread  t3(PrintString_3);
        t1.join();
        t2.join();
        t3.join();
        std::cout<<std::endl;
        return 0;
}
print_num

  编译:g++ -o thread thread.cpp -lpthread -std=c++11,运行结果跟图片中类似

  总结

  这类题也比较常见,主要考擦对线程同步的条件变量和互斥量这种架构的理解;其实,线程池也是用的这种架构。

  

  电话面试

  笔试源码发给了面试官,大约10分钟之后才开始电话面试,以为笔试就凉了,这么长时间都没回复,电话面试长达62分钟,问了超级多...,各种方便都问了

  C++基础知识

  1、面试题用到C++11的特性,说下c++11的特性吧?

  2、提到了数量不定的模板参数,说说怎么实现的?

  3、说下左值和右值

  4、说下构造函数

  5、问了const和static

  6、有哪些智能指针?怎么实现的?

  7、类型转换有哪些?

  ...

  还有很多就不一一列举了

  进程和线程

  1、mmap是啥?

  2、IPC有哪些?

  3、线程同步?

  ...

  网络编程

  1、说下TCP的三次握手和四次挥手

  2、怎么查看某个端口被监听了(PS:不知道脑袋抽筋了说用PS,面试嗯?,马上发现不对,是netstat)

  3、TIME_WAIT状态?大量TIME_WAIT的原因?

  4、怎么实现一个长连接的TCP服务器?

  5、GET和POST的区别?

  5、curl访问一个http服务器,都经过了什么?

  6、select和epoll的区别

  7、epoll的触发模式

  ...

  Redis

  1、说下常见的数据类型

  2、说下哨兵模式

  3、分布式锁

  ...

  Kafka

  1、怎么进行分区的?

  ...

  Mysql

  1、delete、drop、truncate的区别?

  ...

  

  总结

  经过了长达62分钟的电话面试,还是凉凉了,怎么知道凉凉?因为最后结束的时候,面试官没有说:接下来的流程,下一轮面试或者通知HR。就知道凉了,如果通过了,流程就会往下走,什么回去等结果?99%都是没戏。举个例子,去相亲,看中对方了,你会说:你回去等通知吧?我考虑下我们合不合适? 相中的话,恨不得裤子都脱了,还等个屁!!!

  凉凉的主要两点原因:1、基础关键点没回答上来  2、有些回答的不全面,面试官总是想听到更多答案

  

  

大量TIME_WAIT

分类:

技术点:

相关文章:

  • 2021-11-06
  • 2021-08-25
  • 2019-08-08
  • 2022-12-23
  • 2021-08-07
  • 2021-07-21
  • 2021-05-01
  • 2021-09-18
猜你喜欢
  • 2021-04-27
  • 2022-12-23
  • 2021-09-04
  • 2021-05-19
  • 2021-12-12
  • 2021-11-19
  • 2021-08-25
相关资源
相似解决方案