当前位置 博文首页 > wy19961103的博客:面经整理——(百度美团鹅厂网易等)

    wy19961103的博客:面经整理——(百度美团鹅厂网易等)

    作者:[db:作者] 时间:2021-07-30 15:03

    百度

    一面

    算法题: 手写快排、单例模式、死锁
    1 介绍下RPC
    2 看过Dubbo源码是吧?
    说下dubbo怎么区分不同的服务?
    怎么服务降级?
    负载均衡的方法?具体到每种的原理。源码级别
    服务端没注册客户端运行会出现什么结果?
    3 介绍下CQRS
    4 问基础 HashMap是怎么扩容的?为什么是二的次幂?具体到元素是怎么计算index的?
    5 JVM内存模型? 程序计数器到底存了什么东西,举例。常量池 到底存在哪了?
    6 ThreadLocal ThreadLocalMap中的Key到底存了啥
    7 AOP原理的? @before 如果抛出了异常代码还会执行嘛
    8 Cookie和Session的区别

    二面

    1 浏览器输入baidu.com 经历了啥
    2 CDN和DNS执行顺序
    3 HTTPS和HTTP有什么区别 HTTPS执行流程图
    4 页面加速加载 用了哪些技术

    网易

    一面:
    1)介绍项目
    项目里面最大的困难
    项目细节,如何保证数据一致性和可靠性的
    你是怎么快速熟悉业务做需求的?
    2)基础
    说说对高并发的理解
    对多线程的理解
    给你个场景?火车站卖票问题,如何解决超卖?加锁 AutomaticInteger ,具体的原理?
    CAS中存在的ABA问题怎么解决的?加版本控制
    3)数据库
    场景假设:1000W数据,需要在前端显示,怎么写sql或注意哪些内容
    二面:
    1)介绍项目
    2)场景题:引出分布式锁
    1 Zk分布式锁怎么实现,怎么保证宕机了可以释放锁
    2 Redis分布式锁怎么实现,如何保证宕机了可以释放锁
    3)Dubbo相关
    Dubbo服务暴露和远程调用过程
    如果服务端下线了如何Dubbo是如何做的?
    4)MySQL相关
    RR级别下MySQL是否有问题。幻读是什么
    5)Netty相关
    基本组成。拆包粘包问题,nagle算法
    三面:
    1)介绍项目
    2)分布式协调算法2PC,3PC,ZAB,Paxos
    3)Redis集群,主备,如何保证一致性
    4)戳气球leetcode-452

    美团

    一面:
    1)项目介绍
    2)Gavin相关:分布式任务调度需要用到mysql嘛
    系统的架构流程
    Zk节点会存哪些东西
    3)Zk相关:为什么存储任务要用临时节点
    当Zk整体不能提供服务了,临时节点会如何操作?
    4)Dubbo相关:
    有多少种Dubbo加载的方法
    Dubbo服务注册原理
    Dubbo执行流程
    5)Spring相关:
    Spirng如何加载Bean
    Spring有几种在Bean初始化前操作bean的方式?
    Bean初始化之postProcessBeforeInitialization、afterPropertiesSet、init-method、postProcessAfterInitialization等方法的加载
    1、init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。init-method需要在applicationContext.xml配置文档中bean的定义里头写明。例如:
    这样,当TestBean在初始化的时候会执行TestBean中定义的init方法。
    2、afterPropertiesSet方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。afterPropertiesSet 必须实现 InitializingBean接口。实现 InitializingBean接口必须实现afterPropertiesSet方法。
    3、BeanPostProcessor,针对所有Spring上下文中所有的bean,可以在配置文档applicationContext.xml中配置一个BeanPostProcessor,然后对所有的bean进行一个初始化之前和之后的代理。BeanPostProcessor接口中有两个方法: postProcessBeforeInitialization和postProcessAfterInitialization。 postProcessBeforeInitialization方法在bean初始化之前执行, postProcessAfterInitialization方法在bean初始化之后执行。

    总之,afterPropertiesSet 和init-method之间的执行顺序是afterPropertiesSet 先执行,init-method 后执行。从BeanPostProcessor的作用,可以看出最先执行的是postProcessBeforeInitialization,然后是afterPropertiesSet,然后是init-method,然后是postProcessAfterInitialization。
    6)MySQL
    隔离级别。默认的隔离级别是啥?可重复读会引发什么样的问题,怎么解决。
    二面:
    1)项目介绍
    2)Dubbo相关 流程
    3)闲聊
    4)算法题 删除BST中一个节点

    腾讯

    一面:
    1)面向对象的3个特性
    2)static 静态变量中可以使用非静态的属性和方法嘛
    3)HashMap底层实现/HashTable(增加对象锁)
    4)使用什么样的方法可以保证100个线程对一个数据进行自加代码的原子性和可见性,AutomaticInteger如何。

    5)mysql相关
    向数据库表里写学生数据insert into 表名 Values(1, 2, 3)
    MySQL事务 ACID 默认隔离级别
    B+树 特点
    6)dubbo相关
    服务注册的流程,服务发现的流程
    7)Zk相关
    为什么要用Zk作为注册中心(Zk节点的性质)、能用其他的嘛
    Dubbo中的协议包括哪些?
    Zk怎么实现分布式锁
    8)Redis相关
    基本数据类型
    String
    list
    Hash
    set
    Zset
    Stream
    Geo
    Redis集群怎么搭的 选举 哨兵?
    不用主从还有哪些Redis集群的策略
    9)计算机网络
    TCP/IP :标志位
    在这里插入图片描述
    半关闭:
    在这里插入图片描述

    网络层寻址的方式:

    IP寻址
    10)操作系统:
    

    主机字节序和网络字节序有什么区别?

    不同的CPU有不同的字节序类型,这些字节序是指 整数 在内存中保存的顺序,这个叫做 主机序。最常见的有两种:

    1.Little endian:将低序字节存储在起始地址
    2.Big endian:将高序字节存储在起始地址
    

    LE little-endian(小端)

    最符合人的思维的字节序;
    地址低位存储值的低位;
    地址高位存储值的高位;
    怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说;
    低位值小,就应该放在内存地址小的地方,也即内存地址低位;
    反之,高位值就应该放在内存地址大的地方,也即内存地址高位;
    

    BE big-endian(大端)

    1) 最直观的字节序;
    2) 地址低位存储值的高位; 
    3) 地址高位存储值的低位;
    4) 为什么说直观,不要考虑对应关系; 
    5) 只需要把内存地址从左到右按照由低到高的顺序写出;
    6) 把值按照通常的高位到低位的顺序写出;
    7) 两者对照,一个字节一个字节的填充进去;
    

    例子:在内存中双字 0x01020304(DWORD) 的存储方式

    Addr: 4000 4001 4002 4003 LE : 04 03 02 01 BE : 01 02 03 04
    

    x86系列CPU都是little-endian的字节序。网络字节顺序采用big endian排序方式。
    网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。
    我们知道计算机正常的内存增长方式是从低到高(当然栈不是),取数据方式是从基址根据偏移找到他们的位置,从他们的存储方式可以看出,大端存储因为第一个字节就是高位,从而很容易知道它是正数还是负数,对于一些数值判断会很迅速。而小端存储 第一个字节是它的低位,符号位在最后一个字节,这样在做数值四则运算时从低位每次取出相应字节运算,最后直到高位,并且最终把符号位刷新,这样的运算方式会更高效。
    11)项目相关
    12)大数据相关
    100亿QQ号,找到里面不重复的QQ号

    鹅厂

    面试官是个超nice的小改改,怕你不了解题意,会把问题带到实际应用场景里面去,会很耐心的引导,说你和她们要招岗位的匹配点
    1)看你第一个项目是做的网上商城是吧?qps是多少呢?做过哪些优化呢?用的什么数据库呢?用了缓存没呢?
    2)mysql做过哪些优化呢?如何分库分表?分表有哪几种方法?怎么最大程度上避免跨表查询呢?mysql有什么缺点呢?
    3)redis集群怎么设计的呢?哨兵有哪几种呢?有什么用呢?主备之间是怎么同步的呢?
    4)TCP和UDP你知道吧?有什么区别呢?TCP怎么保证可靠传输的呢?为什么要用4次挥手?为什么要超时等待?如果出现大量超时等待是什么原因呢?
    4)你知道回调不?操作系统是怎么实现的呢?
    小改改想问我操作系统,我就疯狂往java上面扯:扯Dubbo、扯RPC、扯Netty。。
    5)你知道select、poll、epoll嘛?再次往java上扯:扯NIO。。
    6)怎么避免C艹内存泄漏?new/delete,malloc/free,智能指针,没了。。我:说下java垃圾回收行不?被小改改制止了2333

    cs