前言:最近应该有很多小伙伴去跳槽面试的吧,相信各位有的已经顺利收到offer了,而有些则是碰壁了,那么我在这里给大家准备了相关面试资料,还有相关算法资料。想了解的可找我拿

一面 8.20上午 1h20min
(除去我断网换地方,电脑没电关机的时间,大概1h)
小哥很有耐心,人很好,一开始我的网很不好,只能看到打字,听不到声音也看不到视频。小哥耐心地等我换了一个地方。后来,我的笔记本又没电了,小哥再次耐心地等我回来,但我大概率感觉凉了......

  • 自我介绍

  • 喜欢钻研,遇到技术难题,通过什么方式解决?

  • 网上的学习途径,经常逛的技术网站

  • 大学期间做过的项目(我聊了大学里的,根本没说研究生的......)

  • 指针和引用的区别

  • 面向对象的三个特性?解释三个特性的含义

  • static的用法

  • malloc和new的区别

  • 智能指针

  • HTTP和HTTPS的区别,HTTPS怎么加密

  • C++11的新特性(看过,但当时我脑子一片空白......绝了)

  • TCP怎么保证可靠传输

  • TCP滑动窗口机制

  • Web页面请求过程(我回答的真的垃圾......)
    由URL怎么知道发给我不是发给别人
    提示我DNS了解吗

  • 死锁发生的条件

  • 操作系统中的颠簸(根本没听过......)
    注:搜了答案,原来就是抖动,之前看过的,但忘了,还是太菜了,要继续努力啊......
    操作系统抖动,又叫颠簸,颠簸是不作处理的计算机活动,通常是因为内存或其他资源耗尽或有限而无法完成所要执行的操作。当操作系统抖动时,程序就会通过操作系统发出请求,操作系统就试图从其他程序中拿来所需的资源,这就使得新的请求不能得到满足。
    在虚拟存储系统(使用页来管理逻辑存储或内存的操作系统)中,颠簸就是发生过度页请求操作的情况。如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。解决方案优化置换算法。
    Belady奇异现象,是指采用页面置换FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多,但缺页率反而提高的异常现象,这是一个违反直觉的现象。

  • 数据库了解过吗? -只知道事务,索引 -说一说索引的概念 -......

  • 说一下几种排序算法的时间复杂度

  • 说一个你最喜欢的算法(我竟然说了贪心......还说的一塌糊涂......)

  • 手撕快排 让程序能运行起来 随便造一组输入 (但我没搞出来......醉了)

  • 有什么问题要问?
    问:需要加强哪一方面
    答:感觉你有点紧张,要放松一点,当成正常的一次交流。基础不错,继续保持。介绍项目的时候,要按照一定结构介绍,背景目标动作结果,也就是STAR法则。如果以后真的想做ios开发的话,最好自学OC。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要, 这是一个我的iOS交流裙 :[891 488 181],不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,

二面 8.26下午(1h)
(可能美团的面试之路比较坎坷,这次的面试链接怎么也打不开。。。面试的小哥哥换了三四次地址,终于好了)

  • 自我介绍

  • c指针类型在编译阶段还是运行阶段确定

  • static关键字的作用

  • 常用的数据结构

  • 用数组或者链表实现一个队列

    #include <iostream>
    using namespace std;
    struct ListNode
    {
      int val;
      ListNode* next;
      ListNode():val(0),next(nullptr){}
      ListNode(int _val):val(_val),next(nullptr) {}
    };
    class q
    {
    private:
        ListNode* head;
        ListNode* tail;
    public:
        q()
        {
            head=new ListNode();
            head->next=nullptr;
            tail=head;//表示当前链表的尾端
        }
    
        void push(int a)
        {
            ListNode* node=new ListNode(a);
            tail->next=node;
            node->next=nullptr;
        tail=node;
        }
        int pop()
        {
            int b=head->next->val;//这里加next
            head->next=head->next->next;
            return b;
        }
    };

    存在的问题:
    q初始化的时候,建立了两个结点,这个时候它的长度是0还是2?
    head和tail不应该是容纳数据的一部分
    head作为伪头结点,只是一个标记,不是输出head指向的值,而是它下一个的值

  • 关于时间复杂度的一系列问题:(我回答的一塌糊涂......醉了......)
    1、队列插入和删除一个数据的时间复杂度
    o(1)
    2、如果用数组实现呢?push和pop的时间复杂度?
    pop:o(n)
    push:o(1)
    3、用数组,队列满了需要扩容,扩容的时间复杂度是什么?
    o(n)
    (我怎么就不会呢。。。。。。)

  • 进程和线程的区别和联系

  • 进程通信的方式

  • 一个省的高考成绩,获得前k名(k比较小)同学的成绩
    提示:成绩是0-100之间的数字,桶排序(我忘了。。。)

  • 最近看什么书/博客?

  • 自己写代码写得多吗?

  • 反问
    1、加强方面:基本功:想做开发,不仅看书/视频,要多动手,自己实现,多实践。
    2、工作以后干什么事情?
    3、OC语言,swift一定要学
    这次面试真的看出了自己的问题,基础和动手实践,简直一针见血。。。真的是基础薄弱啊。。。回放我的录音,我都为自己觉得尴尬,面试官真的有耐心。唉。
    这几次面试都是我准备了什么,反而没有问什么,直接问我薄弱的地方,让我看到自己的大片大片漏洞。努力吧。

hr面 9.3 20min

  • 为什么选择北京?

  • 遇到什么困难?

  • 喜欢读什么书?

  • 怎么提高能力?

  • 喜欢什么样的氛围?

  • 是不是独生子?

  • 反问:
    美团的氛围

文章到这里就结束了,你也可以私信我及时获取面试相关资料。如果你有什么意见和建议欢迎给我留言。