最近面试一些厂的面经整理(阿里,腾讯,字节等)
原文链接:https://blog.csdn.net/l8947943/article/details/105447559
2020-04-11 10:11:46
经历了一个半月的时间学习,已拿到阿里,腾讯,字节,美团,oppo,(360剩下hr)的实习offer,总结一些面试内容,希望能对后来的面试人起到帮助
# 2. 阿里(已通过)
# 一面
1.两道算法题:
- 卖酒瓶问题,五瓶啤酒瓶子可以兑换一瓶,三个瓶盖可以兑换一瓶,n个酒瓶,可以喝多少次
- map村成String和String存成map
- synchronized和volatile
- Hashmap和Hashtable和concurrentHashmap的区别
# 二面
- 简答Spring与Springboot之间的问题
- 回答JVM上的问题
- 回答Java中锁机制
- 回答Java中的数据库问题
# 三面
- 回答Java中的数据索引问题
- 回答Spring中一些注解问题
- 项目中遇到的问题及其解决方案
# 交叉面
- 两道算法题 1)英文题目,回文串的判断,包含各种字符 2)假如允许你对字符串进行如下操作,每次花费“1”的代价把任意字符挪到字符串末端.现在给定两个长度相等的字符串 S1 和 S2,问至少需要多少开销将S1变为S2,比如输入:S1:acdk,S2:ckad, output:2
- cookie和session之间的区别,如何防止cookie泄露
- 什么是JDBC,它有什么用
- JDK和JRE是什么,他们之间有什么联系
- Java中的值传递问题
- final和finalize之间的区别
# HR面:这个因人而异,感觉没啥发的,需要的话再发吧
# 3. 腾讯pcg(已通过)
# 一面
- 两道算法题 a. 已知整数数组A ,找到一个具有最大和的连续子数组,并返回和。 如 { -2, 8, -4, 6, -1},其最大连续子序列为{ 8, -4, 6 },最大和为10 b. 计算二叉树从根节点到叶子节点的路径和,打印和为定值的所有路径
- 项目中并发的部署情况及其高并发问题
# 二面
- 来小伙子跟俺聊聊你的项目,有哪些问题,进行过那些优化,为什么
- 如果让你设计一个网盘,你从那些角度进行设计,保证网盘的传输速度尽可能快
- 牛逼是吧,来整几个算法题 1)中序和后续遍历后的结果,给整成正常的树结构,并按照先根顺序输出出来 2)注意,给你一堆数范围在0-1000且以集合的形式进行存放,请设计一个结构,能够迅速进行存取,删除,进行查找,遍历
# 三面
- 如何保证UDP的可靠传输?怎么实现? 2.Mysql索引?覆盖索引?什么时候使用B+树,什么时候使用哈希表?
- 操作系统多进程和多线程?linux底层中进程中存储成什么形式,包含哪些内容?
- python和java的区别?python如何实现多线程?python字典如何实现遍历?两种遍历的区别是什么
- 讲讲网络中的洪范攻击,会出现什么问题?如何去应对和解决?
- 什么是僵尸进程? 7.java中的hashmap?Table?ConcurrentHashMap之间的关系区别? 8.多线程如何创建?里面的参数分别表示什么? 9.Socket用过吗?底层了解嘛?如何让你实现一个socket服务端,你会注意什么?另外select,poll,epoll之间的区别是什么? 10.MTU知道吗?不知道!那它的大小是多少?我都不知道怎么知道大小?。。。
# 四面
- 如何用命令查看慢查询 ?Mysql如何进行优化?Mysql底层的数据结构是什么样子?为什么使用b+树?
- redis缓存底层怎么实现的?redis如何保证主从一致性问题?
- 如何理解多进程和多线程?了解过协线程?什么场景下使用多线程,什么场景下使用多进程?
- Hashmap和TreeMap的底层原理
- 计算机网络中的四次挥手过程,最后的timewait为什么等待2msl?
- 手写代码,以空格分隔的一串字符串,求排序后的顺序
- redis中了解过分布式锁吗?其中的list数据结构是什么?
# HR面:懒得打字,略
# 4. 字节(已通过,宣传一波,真的效率很高,温柔)
# 一面
- 基础问题,hashMap及一些并发包的使用
- 网络中常常出现的一些响应代码如200OK等
- 如何保证多线程安全
- sychronized与volatile关键字的区别
- 用过线程池嘛?那就开心的聊聊线程池原理,顺便讲讲里面的参数。
- 排序算法,找出K个大的数,尽可能耗时少
- 二叉树进行从上到下输出出来,按层次遍历
- 单例模式,顺便手写一下,不要用脚丫
# 二面
- 手撕代码,在一堆数组中找到首次出现频次大于n的数字
- 手撕代码,数组循环右移k位
- TCP三次握手
- TCP如何保障可靠传输
- 进程之间通信方式,那种最快?
- 进程和线程之间的区别,线程之间的同步方式
- 让你设计一个锁子,如何实现线程安全?不允许使用锁关键字
- 泛型中T怎么实现?extends和super之间的区别?
# 三面
- 进程之间的通信模式
- java中的IO,BIO,NIO之间的区别和联系
- java中的多线程了解么,如何创建线程?差点答到了线程池上。
- 即然了解线程池,那么来写个代码,最外层定义i,定义一个void函数里面新建个线程,对i进行+1操作,最后打印i,请问i的值是多少?为什么?如何保证i之后的值为thread运行后的值?(提示使用wait和notify,或者是join来实现,后想到了countdownLock)
- 了解md5么?https?
- 手撕算法,写两个数相加,数字范围是大于Integer
- LRU的应用场景?(如网页最近浏览记录),那如何实现LRU呢?
# HR:略
# 5. 美团(等HR中)
# 一面
- 计算机网络,如何保证可靠传输
- 聊聊mysql底层索引
- java种的锁机制,说说sychronized底层与原理,说说volatile
- redis种的分布式
- 手写一个树,并进行递归和非递归中序遍历
- 网络中的三次握手,TCP和UDP中的差异,简述一下http和https的区别,并讲讲https的过程,那DNS查找过程讲讲
- mysql的索引失效?聚集和非聚集索引,采用的底层数据结构,为什么不用b树
- 操作系统中的死锁是什么,如何解决?讲讲你理解的页面调度算法,手写一下LRU。进程和线程的区别是啥,那sleep和wait的区别呢
- 来,手写快排
- java中的hashmap?arraylist了解过吗?底层原理?java中的反射机制了解过嘛?反射可以操作私有变量不?
- 简述一下jvm中强引用,虚引用,弱引用,软引用,简述jvm内存缓冲区
- 计算机七层结构,每层功能和使用的协议,ping属于哪层?
- 进程之间的通信如何进行?
# 二面
- 项目中为什么使用redis,有什么优点?
- String,StringBuilder,StringBuffer区别
- Object种包含哪些方法?一般用在哪个场合
- Object种finalized()和finally和final之间的区别
- Mysql中使用的索引。为什么使用B+树?
- 一个方法被private和static修饰,能被override吗?为什么
- HashTable和concurrentHashMap区别,源码中哪些地方使用锁?为什么?
- 在数据类型中为什么会有包装类型和基本数据类型?
- jvm中的垃圾回收机制
- 项目中使用的垃圾回收器?项目中怎么进行JVM调优?如何查看服务器日志?
- 做题,美团笔试题类型,贼复杂
- java中的内存泄露问题,如何出现?如何解决?
# 三面
- 聊聊HashMap呗,源码一些问题,put过程,resize过程,什么时候会出现resize,你知道底层的数据结构吗?里面有些关键变量分别是什么?
- HashMap中你key存放过哪些东西?尝试过放对象么?需要实现两个东西,是什么东西
- 怼项目20分钟
- 写个代码,链表反转,有没有其他的好方法 5.java内存堆,栈分别放什么东西?String str = "abc"和String str1 = new String(“abc”);之间的区别?==和equal的区别?你平时重写过equal没?hashcode有没有重写过,为什么要用hashcode?
- 操作系统中,进程都存一些啥东西?
上次更新: 2024-05-23 10:33:15