面试刷题11-25

写在前面

大家好,这是一篇超长面经+总结,是对自己上一阶段的梳理,也希望给以后准备找工作/正在找工作的同学们多多少少一点帮助。

基本介绍:普通985本+海外渣硕,大二转到CS专业,大三项目交流3+2,19年10月留学毕业,有工程项目,无实习无额外加分项,主Java研发岗,非battmd级别选手,加一起拿了4个offer,最后准备去星环了。

一,面经集合(按公司划分)

最早是去年的12月开始,中间有几个月在研究室抗压没有面,考虑到读者的阅读喜好所以按公司划分面经,强调一点是时间线很重要,前后自己面试能力也有差距,请留意。一般都是远程视频/电话面,每场面经内问题提问顺序不定。一些过于水的面经没有包括在内(比如8月前的某为,银行)

字节跳动

字节跳动一面12.24(游戏研发 秋招补招)

程序:

1.实现优先队列

手写一个堆?

2.设计2D游戏功能 输入两个角色位置 输出射击转向角

3.环形buffer设计

实现一个环形队列?

提问:

1.二叉树与堆的关系

堆是完全二叉树

2.B+树

平衡多叉树,数据全在叶子节点,非叶子节点只存索引

3.时间复杂度

4.内积点乘叉乘

5.CAS机制

6.重载 重写和多态

字节跳动二面12.28

1.内积点乘叉乘

2.堆

3. 排序 各种数据结构

4. 时间复杂度空间复杂度分析

5. 集合类中为什么不用int(为什么Java集合不能存放基本数据类型,只存放对象的引用)

Object 类

6. 同步和异步

7. 多态

8. TCP表头

9. 四次挥手

字节跳动一面3.30(服务器研发 春招)

1. 链表k次反转

2. DB语句查询比平均分高的学生总数

3. 如何查询IP地址是否在国内网段

4. 线程池

5. Reentrantlock

6. synchronized

7. 组合索引

8. JVM内存结构,类加载信息存储在哪

方法区

9.数据库的隔离级别

10. cookie在http报文的那个位置

字节跳动二面3.30

1. 磁盘文件到JVM的加载过程

2. 类存在的意义

3. 如何确定session存放值比如用户id

4. 手写生产者消费者模式

5. a数组用b数组顺序排序

字节跳动7.17(研发 秋招提前批)

1. 查找树中连接两个节点最大路径

2. 进程间通信效率最高的方式

共享内存

3.共享内存怎么实现

4. Mysql四种隔离级别

5.Mysql InnoDB和MyISAM区别

6. Mysql profile是做什么的

7. Redis负载均衡 热键和大键的影响

8.Redis主从机制 分片分布式

9. 缓存怎么实现

10. LRU和FIFO

11. 分页原理

12.tcp拥塞控制

13. http报文头结构

14. http报文长度边界字段

字节跳动8.18(秋招)

1. http和https

2. time-wait和close-wait

3. 最左看二叉树第一个节点

4. mysql左前原则

5. innodb索引 b+树子节点一定存表行信息吗

6. redis持久化 主进程和子进程

7. 有序集合数据结构怎么实现

跳跃表

8. jvm判断回收

9. minor gc和full gc

10. 类加载过程

11. java四种引用

强,弱,虚,软

12. 方法区

方法区:
方法区中包含的都是在整个程序中永远唯一的元素比如class,static变量

是各个线程共享的内存区域,它用于存储class二进制文件,包含了虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。它有个名字叫做Non-Heap(非堆),目的是与Java堆区分开。

常量池是方法区的一部分内存,常量池在编译期间就将一部分数据存放于该区域,包含基本数据类型如int、long等以final声明的常量值,和String字符串,特别注意的是对于方法运行期位于栈中的局部变量String常量的值可以通过 String.intern()方法将该值置入到常量池中。

方法区是线程安全的,由于所有的线程都共享方法区,所以,方法区里的数据访问必须被设计成线程安全的。方法区的静态变量一个线程访问的时候另一个线程必须等待。
 

13. 项目

14. 队列集合怎么实现的,有哪些

15. 类加载过程的不足

16. blockingqueue怎么实现阻塞

17. 哪些对象可以作为gcRoot

 

字节跳动8.18二面

1. dns过程

2. dns递归调用和叠代调用

3. tcp可靠性含义

4. tcp可靠性应用

5. 拥塞机制

6. 长连接短链接

7. http常用首部字段

8. select函数,epoll函数

9. 静态链接库和动态链接库

10. 进程和线程

11. 编译和链接的区别

12. 最大连续和dp解法

面试总体体验很好很全面,我基本都是二面挂,每次都是面挂之后总结重新刷新知识库,然后学习很多。

阿里

阿里巴巴7.24(一二面在一天,秋招提前批)

1. 项目

2. 大数据优化内容

3. 口述程序整数反转

4. zk的作用

5.kafka的partition

6. kafka中一个broker故障,会怎么办

7. flink如何实现exactly-once语义

8. flink的实现原理

9. 其他流处理框架与flink的区别

10. spark如何处理流处理

11. storm如何处理流处理

12. lambda框架原理

13. 如何解决超卖问题

14. 如何用算法解决高并发

15. 如何大数据快速查询一条数据

16. redis存储数据,在工程中的作用

17. 怎么做evaluation验证flink效果

阿里准备的最多,面试官安排了三面,不过和三面面试官商量了下,我10月毕业,他们招11月之后的,为了怕被泡池子(因为能力并不突出)还是放弃了。

腾讯

腾讯 3.7一面(春招实习)

1. Java多态的实现

2. TreeMap和HashMap的区别

3.MySQL索引底层的实现

4. 什么是NoSQL,NoSQL的常见应用

5. Redis的数据结构

腾讯3.8二面

1. GC是怎么判断年代的

2. 浮点数怎么存储

3. 什么是TTL,什么是TraceRoute

腾讯3.20三面

1.项目,大数据框架了解

2.GC回收

3. 网络查找命令

4. Linux磁盘命令

df -h

5.网络第二层和第三层有什么区别

6.linux的常用指令

面试官说理论还可以,具体操作能力不行。。

腾讯 8.9(秋招提前批)

自己讲:

1. JVM

2. linux内核

3. zookeeper

4. kafka消息队列

5. 数据库mysql和redis

6. 分布式事务

7. 微服务框架

8. 网络攻击

9. 代码耦合性

10. 项目完成背景

11. TCP,UDP

期间提问:

1. Zab协议

2. 进程地址存储

3. 网络编程IO多路复用

4. 网络传输模型

5. IO过程

6. 新的微服务框架

王者荣耀项目组。。。我还说我不喜欢玩王者哈哈哈(一个半小时脑子晕掉了)

拼多多

拼多多3.25 一面(春招 java岗)

1.jsp到servlet过程,servlet生命周期

2.http与https区别,传输过程,如何交互

3. hashmap结构,concurrenthashmap结构

4.线程池声明与使用

5. JVM内存模型,垃圾回收

6. Tomcat运行原理

7. 手撸死锁模型

8. 流处理与批处理区别

9.storm和flink的区别

10.怎么学习的

拼多多3.28 二面

1. 手撸适配器模式

2. 手撸代码并查找边界错误

3. Spring MVC框架

4. BASE原则

5. 分布式原理CAP原则

6. Java反射

7. private属性,final类型举例

8. ReadWriteLock

9. 数据库-四种隔离级别-脏读/幻读/-索引

微信视频面,最后问了我要不要去大数据研发,我拒绝了,当时比较傻缺

晨星

晨星3.26(一面)

1. 网络:tcp udp区别

http协议介绍

2. 面向对象 抽象类和接口区别

3.单例模式实现

4. 数据库索引

5. Js怎么面向对象

6. 装饰器模式原理

7.静态类和单例模式有什么区别

8. 设计一个股票推送的设计模式

9. 容错分析题:页面加载慢原因

晨星二面(留的作业)

1:请在数据库设计两个表,分别存储股票每天的交易数据表,和上市公司的运营数据表

,画出相应的数据表和对应关系。

2. 请用TF-IDF算法计算相关度,并采用适当的机器学习训练模型来进行训练,找到更高的筛选文档准确率

3.聊人生

然后就是hr面了

BiGo

BiGo一面12.20

1. 原始项目介绍

2. Java HashMap/TreeMap

3. 多线程方法

3. JVM GC算法

4. 死锁

5. Flink

6.static关键字

7.数据库常见支持类型

8. char和varchar的区别,优缺点

9.索引的种类

10. 联合索引最左原则

11. 索引底层:B+树,散列,位图

12. java hashmap put操作

13. hashmap扩容,承载因子

14. 设计模式在自己工程中使用举例

二面

聊项目

第一个面的公司(当时还不知道bigo是什么公司。。)感觉当时bigo真的很缺人,主管还加了微信聊了很久,可是当时真的很菜,多线程一窍不通。。

海康

海康威视7.17 电话一面

1. 项目

2. zookeeper怎么实现分布式锁

3. 分布式锁作用

4. Hashmap,concurrentHashmap

5. redis分布式配置

6. redis持久化

7. redis单线程作用

8. 单例模式

9. 项目中遇到的OOM问题

10. 怎么监视JVM数据

海康9.21 现场二面

1. hbase读写过程

2. flink工程

3. 设计通过flink查找9点10分各个路口通过车辆的信息

4. 学习flink的方法和途径

5. jvm错误排查 oom排查 jvm问题:垃圾回收时间过长

6. 十个kafka消费者线程消费,如何设计在多线程场景下完成统计

7. 工程

b站

bilibili 8.6 一面

1. redis预热

2. redis存储数据

3. zookeeper原理 ZAB协议

4. zookeeper加节点

5. 分布式锁种类

6. zookeeper分布式锁,redis分布式锁

b站8.14 二面

1. 项目

2. 怎么做项目测试

3. java Threadlocal类(线程变量本地化)

4. mysql存储引擎

5. sql优化

6. 进程线程区别

7. SSM框架常用注解

7. 自定义注解

星环

星环 8.9 电话一面

1. 工程flink的checkpoint的具体过程

2. checkpoint对系统有什么影响

3. int和integer的区别,装箱与拆箱

4. 怎么调用integer的方法,具体过程

5. java内部类和静态内部类

6. 二叉树前序遍历

7. best time to buy and sell stock最多二次买卖

8. 常见设计模式

星环8.27 视频一面

1. c++static

2. java static

3. 操作系统栈和堆区别

4. 存储代码段

5. 缓存,缓存不一致性

6. tcp与udp应用场景

7. 聚簇索引与非聚簇索引

8. join的种类以及实际操作

9. 编程:二叉树按层遍历

10. 尬聊了一会儿工程

二面

1. 子数组和为0 dp算法

2. flink怎么保证exactly-once语义

3. 高并发环境怎么做测试

4. 常用的检查系统failure的方法

5. java堆怎么排查错误

6. 工程

感觉主要是临场写代码,还问了我好多测试的内容?

三面

0. c++虚函数

1. fibbonacci算法改进

2. redis怎么存储数据

3. redis存的key是什么值

4. MySQL的ORM方式

5. mybatis怎么对应实体

6. applicationcontext逻辑

7. bean的生命周期和种类

8. flink的检查点机制怎么改进?

9. flink窗口

10. flink的任务失败模型

11. 还有很多工程上的细节

狂怼项目,大佬知识量储备极高,我实为弱鸡

有道

有道8.24

1. 网络可靠传输

2. tcp报文结构

3. 网络传输模型

4. 拥塞机制

5. 流量控制

6. linux内存磁盘转化

7. linux线程状态

8. linux页表结构

9. 内核怎么处理线程(初始化,加锁)

10. 操作系统与jvm的不同

11. 类加载过程

12. 线程怎么去访问jvm里的类信息

13. pthread

面的java岗,当时想终于可以被问java相关了,结果给我来这个,问线程间通信方式的时候唯一一次轻怼面试官,接着就开始问POSIX了。

网易互娱

网易游戏8.28 一面

1. 操作系统进程分配区,内存管理

2. io多路复用

3. 操作系统层面怎么实现互斥锁

4. 数据段组成

5. 网络tcp建立与释放

6. tcp长连接 heartbeat

7. tcp半连接

8. 图的遍历算法 迪杰斯特拉算法

9. 上楼梯

10. 64匹马赛跑,8个跑道,选出最快4匹马

11. java单例模式一套

12. java多线程原子锁,cas机制,aba问题

13. 缓存置换lru实现

14. 图形学了解

15.快排实现

16. 堆排序实现,怎么建堆

17. cpu分配时间片算法

网易互娱10.15 二面

1. 项目

2. 输入整数n,输出1-n的随机数组(约瑟夫环?)

3. 链表成环,并找到入口节点,数学推导

种种原因 面试拖了好久

深信服

深信服 8.17

1. 4个项目挨个问

2. C++的new和malloc

3. C++重载

4. 进程间通信的互斥方法

5. 堆和栈的区别

6. 介绍进程和线程区别

7. linux内核

8. 介绍每种设计模式以及应用

9.单核cpu多线程

10. 指针有了解吗

11.文件软链接硬连接

二面

1. linux 怎么进shell

2. linux的swap分区

3. 网络tcp四次挥手

4. 应用层协议http post和get请求

5. jmeter集合测试

6. 大数据有哪些failure 怎么应对

7. 分布式架构的性能优化

8. mysql存储引擎

9. xss攻击,sql注入

10. 网络虚拟化技术是什么,常用平台

值得一提的是深信服hr真的知识面好广,给我讲的业务划分和概念很细hhh佩服

依图

依图 9.4

1. 项目

2. zk用途,分布式锁

3. redis分布式锁

4. 括号匹配编程

5. 树节点z-order打印

二面重感冒,写了个3-sum的变型题,状态太差了,不过很喜欢这种考察方式,上来没说几句就写代码,写完就完事hhh

招银科技

招银 9.29

1. java基本数据类型

2. java对象生命周期

3. mysql和redis区别

4. 线程生命周期

5. 多线程好处

6. 线程池作用

招银10.12

一面:

数据库mysql的隔离级别

怎么实现多线程安全

jvm的类加载机制和垃圾回收原理

b+树和红黑树区别

二叉树的遍历方法 写按层遍历二叉树

flink和spark的区别

单例模式和适配器模式

二面:

工程达到的效果,输入是什么输出是什么

有点像毕业答辩

感觉比较水。。。

二,知识点汇总

考过的面经提取的基础知识点,便于查缺补漏。

算法:双指针,排序,贪心思想,二分查找,分治,回溯法,动态规划,高级算法

数据结构:数组,链表,树,栈和队列,图,堆,散列表

JavaSE:static,装箱拆箱,多态,设计模式(单例模式,适配器模式,工厂模式,装饰器模式,迭代模式,至少会3个),集合(HashMap,LinkedListQueue, ArrayList, PriorityQueue, JUC包里的集合),NIO

多线程:CAS机制,volatile,synchronized,JUC包(CountDownLatch, Reentrantlock, FutureTask,ReadWriteLock)

JVM: 垃圾回收算法,垃圾回收器,类加载,内存模型,OOM处理,工程优化

JavaEE:SpringBoot,SpringMVC,AOP,IOC,MyBatis,Hibernate,微服务框架

分布式理论:CAP,BASE,2PC和3PC,Paxos,ZAB协议

操作系统:linux,进程与线程,IPC方式,PIV,shell,页表结构,同步异步,epoll函数

数据库:MySQL,ACID,索引,InnoDB,MyISAM,MVCC,NoSQL,Redis

网络:网络架构,tcp可靠性,窗口,UDP,HTTP,DNS,IP,ARP,Ping,TraceRoute

其他还有一些加分知识点,工程相关大数据/服务器框架组件(kafka,zk,Hbase,hdfs,flink,spark,storm,nginx,yarn等),微服务框架的几个,网络相关的一些概念(sdn,网络攻击类型,nagle)。每个词条都有自己完整的知识体系。

三,学习工具推荐

1. 写博客是很好的习惯,各大博客网站多看多想

2. 每个知识点掰开揉碎要讲的东西很多,不能浅尝辄止。

3. 看书很重要,知识体系会有一个完整的整合过程。

基本好书可以多看几遍,比如一些经典教材,深入理解JVM,Effective Java,java并发和深入剖析tomcat,图解系列,MySQL技术内幕,从paxos到zk一致性,有些书内容有些过时不过有些部分很精彩可以参考,操作系统我没找到什么好理解的书,有想要资源的可以私信。

四,关于笔试

我总共参加了50场左右笔试,每次笔试答题过程都会存在本地ide,从刚开始的都不会到最后可以A满4题 也是自己训练了很多,以下是自己的过程总结:

先从算法导论那本书入手,熟悉基本算法和基础集合的初始化,刚开始会很艰难,尤其是排序算法,我建议还是多练多会,对以后的提升很重要。

然后在leetcode上找题,刚开始我先找easy题做,做了50道左右感觉可以完整的解出一道题,开始按顺序从头做。一般我每道题会解至少3遍(因为刚开始不太会,先早上按照答案抄一遍,然后凭借印象自己A一下,晚上的时候再A一下,三天之后再A),每天做3道题左右,这种情况持续了一个半月吧,当时效果其实不太明显,不过后期还是有收获的。

leetcode上刷了200+之后转战牛客,因为企业面试现在用牛客比较多,而且我比较喜好牛客什么都没有写的ide,比较舒服。牛客上开始刷剑指offer,其实第一阶段我就偶尔有刷,不过这一次是有底气的刷,刷完之后觉得剑指offer应对笔试面试还是神器,所以以后每次要面试写代码的时候我都有看这个。

后来就懒了,每天在牛客的题库找两三道题做,直到把经验值刷到10为止。

以上过程仅供参考,请理智食用

最后关于笔试作弊,请不要拿社会什么的做借口,作弊可耻是基本常识,并不会因为形势或人数的因素而改变,扎实的代码能力肯定有用的,现在多吃点苦是值得的。

五,关于面试

有技术只是入场券,拿offer还是要一定的运气。当然,很多大牛之所以为大牛是因为平时积累的就足够多,会议论文,acm竞赛,大厂实习,科研创新成绩等等,非大牛的我们就要做好任人挑选的准备,态度端正到最后一刻,有比较烦人的面试官是常事,保持心态很重要。

面试官:“最后有什么问题要问我的吗?”

我一般是问一些公司业务,和进去之后做什么工作,然后直接问后续流程(我觉得挺好的,既能节省彼此时间也能直到自己一些技能点不足,下次面试加以改进)

六,关于选择

不要给自己太大压力,找工作和考试不一样,要顺着自己的心意在自己可达的范围内找合适的,不是追高(当然有上进心是好事)。努力很重要学会放下和生活也很重要。研发岗位有游戏研发,服务器研发,客户端研发,面向各种语言的研发,大数据研发,网络工程研发,安全研发等等,不同机构和公司业务要多少了解一点再选比较好。比如游戏岗几个经典考题(洗牌算法,搭配算法,动态规划,经典数据结构树,链表的考察),服务器研发针对各部门要求会有变化,感觉操作系统会多一些

 

 

美团点评二面
1.首先还是问项目。问的比较细,比较全。
String,StringBuffer,StringBuilder的区别,为什么String是不可变的,StringBuffer和StringBuilder哪个是线程安全的,他们分别适用于什么场景。
java类加载过程是怎么样的,说一下volatile。
并发包了解吗?假如几个线程之间相互等待,可以用哪个并发类来实现,他的原理是什么?
数据库慢查询优化了解哪些?说了很多,面试官说假如这些都已经做好了还是很慢怎么办?最后不清楚问了下面试官,面试官主要想了解数据库分区的知识。
说一下spring容器的启动过程?
讲一下分布式锁,基于zookeeper实现和redis实现在性能上有什么差异?
kafka如何保证不丢消息又不会重复消费。了解大数据相关的一些技术吗?
最后写了道题,leetcode55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。


数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

示例 1:

输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

示例 2:

输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

最快什么时候能过来?有什么问题想问的?然后说后面有hr再和你联系。


美团点评三面
面试官首先问了很多简历中的一些基本信息.画一下你这个项目与哪些工程交互,它在你们的产品中处于什么样一个位置
画一下你们这个项目的架构图,挑一个你觉得比较难的业务场景来讲一下,
你们这个项目中都遇到了哪些问题呢?说说你们最后都怎么解决的
写了一段代码,问这个代码最后输出什么?申请多大的内存空间,都在什么位置申请的
public class Test {

public static void main(String[] args) {

String str = "hello";
test(str);
System.out.println(str);
}

public static void test(String str){
str = str + "world";
System.out.println(str);
int[] a = new int[1024];
}
}
hashmap了解吗?他的set和get的时间复杂度是多少?为什么是O(1),说下详细过程,hashmap是线程安全的吗?
Jvm了解吗?jvm中哪些可以作为垃圾回收的gcroot?为什么呢?
什么时候能过来上班?然后就说等会hr面。


美团点评hr面

问了下基本情况,什么时候能过来,为什么想换工作?在上家的绩效和薪水情况,期望工资是多少。

 


上午11点,面试官打电话来面试,这就开始了,22分钟45秒。。。。

  • 自我介绍
  • 对Java链表了解吗,说说它的特点,为什么插入删除效率高
  • ArrayList,如何扩容(这里忘了只知道扩容1.5倍)
  • ArrayList是线程安全的吗,有线程安全的ArrayList吗,答:Vector,CopyOnWriteArrayList。
  • CopyOnWriteArrayList如何保证线程安全

写时复制

  • HashMap了解吗,说一说(扯了一下HashMap数据结构,插入,没说发生hash冲突时的解决方法,废了)

 

  • HashMap扩容,扩容之后元素如何处理(瞎JB扯了一下)
  • 什么是HTTP
  • HTTP和TCP的关系,为什么TCP为HTTP服务???
  • Java虚拟机运行时内存结构(早知道扯一下1.6,1.7,1.8的区别)
  • Java垃圾收集器有哪些
  • Java垃圾收集器如何进行垃圾回收(又是瞎扯)
  • 你的优势,劣势,为什么想去杭州

反问环节:问面试官面试表现如何,面试官:简历上的东西还需深入,觉得像只了解表面,内部的运行原理了解得不够。。。

总结一下,遗忘是硬伤,好多问题都不难,但是就答不上来,凉了凉了

 


 

秋招上岸,蹉跎了这么久都值了,感谢字节给我这个菜比一个机会。

10.11投递的深圳的后端开发 10.17一面 10.18二面 10.20三面 10.24offercall 10.25正式offer

这个处理速度真的让楼主太感动了,真的是蹉跎了好久,之前还被室友吐槽运气差,说是可能会给我憋了一个大招,现在真的感谢这个大招!

附面经,回馈牛客,然后因为楼主记性不大好,所以记的不全就把一,二,三面还记得的知识点和算法题都写出来。

1.发起Http请求涉及哪些协议

2.TCP,UDP区别

3.面向报文面向连接

4.哈希表的有序怎么保证

增加一个链表,记录插入顺序

5.redis数据类型,zset讲一下

底层是跳跃表

6.HashMap原理,线程安全问题,ConcurrentHashMap原理,Hashtable

7.Synchronized

8.MySQL索引原理,为什么用B+树不用B树

9.红黑树

10.TCP四次分手原理

11.如何实现可靠的UDP

12.tcp无状态

13.cookie,session,密码设置过期时间并确保安全性,怎么用sessionID和cookie确保

14.http和https,ssl加密解密原理

15.优先级队列

16.设置一个id生成器 唯一且不可以递增

17.数据库隔离级别

18.可重复度怎么实现的 然后给出了一道InnoDB可重复读级别的题

写的部分:

1.循环递增数组输出最小值的下标

2.查找第一个缺失的正整数

3.复杂链表的复制

4.对2000万高考考生总分进行排序

5.给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,
返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。

6.二叉树的蛇形遍历

7.MySQL查询男性平均年龄最大的城市,给了id,name,sex,city,写语句并设计索引

8.AB赌博,A赢2局或以上获胜,B赢3局或以上获胜,求A,B获胜概率

9.不公平硬币,有没有正反面概率相等的时候

 


 

一面是个外国人……上来自我介绍,然后手撕两道题。

二面虽然是个中国人,但是自我介绍也要英文的,之后全程中文,手撕两道题。

 

一面题目

1.有n个用户,每个用户都会上线一段时间,比如时间a上线,时间b下线,问同一时刻在线的人数最多的有几个?

例,有五个用户

用户 上线时间 下线时间

A 9:30 11:30

B 9:00 12:00

C 10:00 12:30

D 13:30 14:30

E 13:00 14:00

 

在10:00-11:30期间有3个用户在线,其他时间段都没有超过3个的,所以返回3

 

 

 

2.有一个部分排序数组,若将从下标i到下标j的子数组进行排序,整个数组就会变成一个排好序的,求下标i和j

 

例 arr[] = {1, 2, 4, 7, 6, 5, 3, 11, 10, 13, 15} 那么应该把从4到10之间的子数组排序,整个数组就是排序的,返回{2, 8}

 

 

二面题目

1.判断一颗二叉树是不是平衡二叉树

2.(1)若有一个数组有100w个数,0<=i<j<len,求从下标i到下标j的子数组的和。

(2)若更改了ij之间下标k的数,arr[k]=num,接着求子数组的和,要求时间复杂度空间复杂的O(logn)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值