面经整理——(百度美团鹅厂网易等)

百度

一面

算法题: 手写快排、单例模式、死锁
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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值