面试刷题11-2

个人背景

菜鸡

以下面试题不分先后,不对应公司

公司包括:喜马拉雅,比心,Soul,平安,运满满等

比较简单的题目不再赘述

计算机基础

计算机是怎么知道执行这些Java程序代码的
计算机的结构

Java

Tomcat的架构
线程越多越好吗?

不是,线程上下文切换耗费大量时间
线程池的拒绝策略方案,线程池参数怎么配置

面试刷题11-2_第1张图片
线程池的等待队列会无界吗

有无界的阻塞链表
Spring怎么解决循环依赖
HashMap为啥不安全,ArrayList怎么变安全

CopyOnWriteArrayList
垃圾回收器怎么选择,JDK各个版本默认的实现

Redis

Redis单线程为什么可以还可以快速高并发请求

IO多路复用,纯内存操作
Redis的主从复制原理
Redis的集群模式
Redis的哨兵机制
Redis的持久化类型及方案

RDB 快照和AOF

面试刷题11-2_第2张图片
Redis的过期策略类型及其自身方
点赞功能的实现
Redis的事务

MySQL

MySQL有哪些锁

面试刷题11-2_第3张图片


MySQL索引类型及介绍

B+树索引


MySQL存储引擎类型及介绍

面试刷题11-2_第4张图片

面试刷题11-2_第5张图片

 

面试刷题11-2_第6张图片

面试刷题11-2_第7张图片


MySQL的MVCC何时更新版本号
InnoDB节点存储的什么
事务回滚的具体实现

分布式

Session一致性的各种方法及差异比较
分布式事务的各种方案及你的最佳方案
定时任务的调度

微服务

Eurake和Zookeeper的区别
Eurake如何实现自注册及发现,自动注册发现怎么实现
如何保证Eurake的高可用
Zuul和Nginx的差异
Hystrix的作用分类,限流功能的源码实现,熔断功能的源码实现,QPS的实现

数据结构&算法

Trie树的具体实现
按层打印二叉树
全排列

 

 

拼多多 社招 java 一面面经

1、简单做一下自我介绍把,为什么这么快就想换工作。。。。你说一下你简历里的这个XX项目。

2、看你在项目中用了redis,我们先聊聊redis吧,常用的数据结构有哪几种,在你的项目中用过哪几种,以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis集群和哨兵机制有什么区别?redis的持久化机制了解吗?你们在项目中是怎么做持久化的?遇到过redis的hotkey吗?怎么处理的?redis是单线程的吗?单线程为什么还这么快?讲一讲redis的内存模型?
3.我看你还用了RabbitMQ,简单说一下RabbitMQ的工作原理?如何保证消息的顺序执行?Kafka了解吗?和RabbitMQ有什么区别?你为啥不用kafka来做,当时怎么考虑的?


4、我看你简历里说熟悉计算机网络,来聊一聊计算机网络吧。了不了解tcp/udp,简单说下两者的区别?tcp为什么要三次握手和四次挥手?两次握手可以不?会有什么问题?

 


tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用?

5、http与https有啥区别?https是怎么做到安全的?

CA证书和加密传输


6、有没有了解过协程?说下协程和线程的区别?用过哪些linux命令?如查看内存使用、网络情况?
7、你了解哪些设计模式啊。挑一个熟悉的讲讲?(除了单例模式)在项目中有用过设计模式吗?讲讲你怎么用的?简单说一下代理模式和装饰器模式?

8、你们数据库有没有用到分库分表,怎么做的?分库分表以后全局id怎么生成的?

9、索引的常见实现方式有哪些,有哪些区别?MySQL的存储引擎有哪些,有哪些区别?InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?

面试刷题11-2_第8张图片

 


10、看你简历提到了raft算法,讲下raft算法的基本流程?raft算法里面如果出现脑裂怎么处理?有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?

11、聊聊java基础吧,如果我是想一个人的姓名一样就认为他们equal,能现场写下我们怎么重写equals吗?如果两个对象,一个是cat,一个是dog,我们认为他们的name属性一样就一样,怎么重写equals
12,还有点时间,写个题吧
leetcode406. 根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

注意:
总人数少于1100人。

示例

输入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

 

paypal一面面经

1.做一下自我介绍吧,你的XXX项目说一下?你这个线程池的核心线程数怎么设置的?主要考虑啥?

CPU密集还是IO密集
你这里为什么要用消息中间件呢?不用可以吗?
2.线程池中ExecutorService中execute()和submit()方法的区别?线程池都有哪些参数?拒绝策略有哪几种?

面试刷题11-2_第9张图片

 

有无返回值


3.了解netty吗?说一说你知道的。看过dubbo的源码吗?说一说你了解的

,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。
4.说说Spring中Bean的生命周期和Bean的作用域?Spring 在web 容器中的启动过程?IOC的实现原理?
5.讲讲数据库乐观锁和悲观锁?各自的适用条件?有没有sql调优经历。

[QA]什么是悲观锁和乐观锁?

术语 描述 常见案例
乐观锁 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据 版本号控制,适用于多读少写的场景
悲观锁 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁 DB的行锁、表锁等,适用于数据一致性比较高的场景

6.讲一讲计算机网络的三次握手和四次挥手?为什么要三次握手,两次可以不?
7.最后是一套编程题:leetcode647
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。

示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".
示例 2:输入: "aaa"输出: 6说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".


除了java你还会其他的吗?有什么想问的?

 

paypal二面面经

1.假如一个风控系统响应速度突然变慢怎么排查

2.hashmap有几种构造构造函数。hashmap的遍历有几种方式,分别使用什么场景

3.对Java的垃圾回收机制了解吗?垃圾回收器呢?说一下CMS?OOM的排查思路?

4.springboot是怎么运行起来的
5.线程池的实现原理?为什么不建议使用Excutors来创建线程池?核心线程和工作线程的区别?volatile了解吗?和syncronized的区别?讲一讲AQS?公平锁和非公平锁?
6.NOClassDefFoundError和ClassNotFoundException有什么区别?
7.数据库的ACID和隔离级别? 分布式事务了解吗?有哪些处理方法?
8.redis实现分布式锁与用zk实现有什么区别,你用的redis,知道用zk怎么实现吗?
9.什么是缓存击穿,redis的hotkey如何处理?如何保证数据库与缓存双写的一致性。
10.你说你了解dubbo,能讲一下dubbo的基本原理吗?

11.kafka如何保证不丢消息又不会重复消费。

12.你了解哪些设计模式?讲一讲观察者模式和策略模式?

手写代码leetcode91   * 一条包含字母 A-Z 的消息通过以下方式进行了编码:
'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个只包含数字的非空字符串,请计算解码方法的总数。
示例 1:
输入: "12"
输出: 2
解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。
 

对大数据方面的技术栈有没有什么了解?有没有什么想问我的?期望工资是多少?

整体还是很常规的,面试官很有水平,也很友好。本来担心要英文面试,结果并木有用英文哈。

 


快手java一面面经
1.要不先做下自我介绍?说一说你最近做的那个项目?然后针对简历提了几个问题。你哪年生的啊?我看你简历上没有。

2.我看你简历里面说做过mysql的优化,说说你都做过哪些优化或者优化的思路?
数据库的索引了解吗?说一下索引的原理?聚集索引和非聚集索引了解吗?了解mysql的回表吗?

mysql实现分布式锁了解吗?还有没有其他更好的方式?

3.说一下事务的一些东西?你对事务的了解有哪些?说说数据库的乐观锁和悲观锁?

4..Redis有哪些持久化方式?你们在项目中一般怎么做持久化?如何实现集群和高可用?

5.Java中有哪些锁?synchronized与Lock有哪些区别?什么是公平锁和非公平锁?他们的底层怎么实现的?
AQS原理了解吗?能不能详细介绍一下?

 



6..说一下线程池的原理?ExcutorService下的四种线程池分别用在什么场景下?为什么单线程池和固定线程池使用的任务阻塞队列是LinkedBlockingQueue(),而缓存线程池使用的是SynchronousQueue()呢?

面试刷题11-2_第10张图片

 

 

 

 

 

 

 

 

 

 



7.说一下violate关键字吧?刚才你提到可见性?他是如何保证可见性的?

8.说一下GC吧,什么时候进行Full GC呢?你了解哪些收集器?CMS和G1。详细谈谈G1的优点

最后写了一个编程题。
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。


百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6。

示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。


这个是leetcode原题。

写完面试官问方便来北京现场面试吗?你还有什么想问的?后续有什么消息hr会通知你。

紧接着就约了二面

二面比较注重设计

面试官上来就让设计了一个小型的社交系统。从数据库设计开始,然后设计架构。这个花了很长时间。
然后问了下dubbo的原理,有没有看过dubbo源码?dubbo的容错机制?
然后又是写题了
是股票买卖的一道题
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。

示例:

输入: [1,2,3,0,2]
输出: 3
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]
最后还是有什么想问的?



8.14 阿里巴巴一面(新零售供应链,凉了,这是我的第一场面试),大概30分钟
HashMap和HashTable区别
HashMap实现原理(put、resize)
StringBuffer和StringBuilder区别
数据库事务隔离级别

如何避免幻读
数据库引擎(Innodb)的事务支持粒度
如何实现乐观锁
Synchronized实现原理
tcp三次握手,四次回首
osi7层模型

最后问了两个智力题:
两个粗细不均匀、长短不一的的绳子,燃烧一根分别需要60分钟,如何利用两根绳子,测量出15分钟?
一个篮球可以装多个乒乓球?



8.21有赞一面(凉了)20分钟
HashMap和ArrayList默认容量分别是多少?
HashMap和HashTable区别
HashMap什么时候扩容,几倍?
ArrayList什么时候扩容,几倍?
讲讲Java内存模型
讲讲gc算法
01背包问题,我说了dp的方案,但面试官说使用贪心算法(性价比最高优先,我当时屈服了),但是后来发现,贪心不行。

 


 

  • 一面:(25号晚上做了美团笔试,很差,3道算法题,只过了30%)

    上来先吐槽我算法很烂,然后要考察我基础。
    进程调度方式
    进程与线程区别
    多线程优点
    进程同步有哪些方式
    osi七层模型,以及对应都有什么协议
    tcp三次握手和四次挥手
    udp和tcp区别
    http报文都有什么
    客户端发起http到服务端返回的详细过程
    编程实现求二叉数深度
    还有一题忘了。

    二面:

    二面主要考察场景题,让我从自己的项目出发,如果项目需要上线了,需要考虑什么问题。
    看过那些架构的设计。
    平时的学习方法。

  • 8.27阿里国际(深圳)一面(凉了)
    GC算法都知道哪些?分别讲讲(serial pal new、parelle scavge、serial old、parelle old、CMS)主要讲了下cms
    JVM内存模型。
    Zookeeper原理,当有3台服务器,一个挂了,怎么保证服务的正常使用?
    Spring 怎么接受web请求(应该是Spring MVC)流程是怎样的。
    AOP原理
    Spring Boot启动加载过程。

  • 9.3 葡萄城(一面+机试+二面,凉了)(C#做控件开发)
    一面,两个面试官,问了计算机网络,还是那些常问的问题,我就不列出来了。
    问java有什么优缺点,我说单继承,接口可以多实现,就问为什么?多承继为什么不好?(自己给自己挖了个坑)
    还喜欢什么?集合。
    都有哪些集合?balabala……
    HashMap是怎么实现的?baabala
    HashMap可以解决什么问题?我说字符频率统计。
    怎么做的?比较hashcode,然后比较equals
    如果字符串是变量怎么办,“abc abc”,两个abc的地址不同?暗示hashcode不同,没答出来…
    git常用操作都有哪些,查看日志用啥?
    如果不小心把一个很大的文件2gb,push了上去,然后发现后在远端删除了,之后别人执行git clone,会把所有的历史信息给clone下来,如何解决这个问题?
    重点提的是,让我讲述项目难点的时候,我提到了跨域问题,我当时对项目还没有完全熟悉(2年前做的),一直在那讨论为什么会出现跨域(这也导致我回去之后,把项目仔细看了下,发现是我当时对项目不够书序,导致描述错误)
    二面,机试:用#画直方图,输入一组数据:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    [

    {value:2,label:”a”},

    {value:5,label:“b”},

    {value:3,label:”c”}

    ]

    输出:用空格分割每列

        #

        #

        #   #

    #   #   #

    #   #   #

    ———-------

    a   b   c

    做出来了之后,让支持value是复数,即在虚线下方画#,比较简单。
    三面,还是2个人,比较有映像的是:
    让我简单描述如何实现电梯调度算法,字符串压缩算法。(这个回答的不是很好,回家之后才想起来电梯调度算法和进程调度算法差不多)

你可能感兴趣的:(算法)