首页 > 春招后端开发从0到offer
头像
原来是笑傲君殿下
编辑于 2021-04-25 17:49
+ 关注

春招后端开发从0到offer 内部员工回复

春招后端开发从0到offer

写在前面的话:

在介绍面经之前先介绍一下个人的情况吧,本人就读于某北京中流211,大三的时候硬钢算法岗(有想看算法面经的点这里),最后又为了考研放弃了百度实习(结果考研也木得TAT....),0实习0项目从一月份开始准备后端到现在。写这篇面经的主要目的在于回馈牛客上广大给我帮助的那些兄弟们吧,同时也是想分享自己的一些学习经验(尽管拿到的offer都不太好hhh)。

目前拿到的offer有瓜子、用友、海康和神策,薪资从低的20w到最高30w+。目前还有零零散散的一些公司在面试。(前期由于准备不得要领,还没有构建起自己的知识框架,心仪的大厂仅仅只面了美团,结果一面都没过真的丢人TAT,大家还是早点复习好啊。)我从我的面经中截取了一部分最有代表性的放了上来。希望能对大家有所帮助,拿到好的offer。

如何准备面试

项目部分

针对项目部分,我觉得每个人的简历至少得有一个你觉得对你以后工作最有帮助的项目,而且需要把项目吃透理解透彻。我个人的项目是电子商城系统(Springboot+mybatis+mysql),基本就是照着b站的视频一步步搭建的。(可以看看尚硅谷的视频,感觉挺好的,除了有点长),进一步的拓展可以去看看一些秒杀模块是怎么设计的,一些消息中间件的使用mq啥的(这个我推荐 编程不良人)。大致的时间在一个月左右,这个时候你就可以着手准备相应的面试的知识了。

面试知识准备

面试的知识的话我个人主要分为以下部分(重要性按次序依次递减):

1、JAVA基础;

2、算法部分;

3、计算机基础(包括计算机网络,操作系统,些许机算机组成原理)

4、项目相关知识;

一、JAVA基础

首先是JAVA基础的部分,这块是最经常被问到的,包括JAVA的集合类,JVM的结构,JAVA的内存模型,GC相关等等。对这些知识点要能够充分的掌握。个人的建议是,每日阅读一篇牛客上的面经来整理自己的知识框架,某些必要情况下可以自己阅读原代码。同时在面经的选择上,尽量选择能走到二面三面的,因为有些一面的话,面试官觉得人不行也会放松要求,这对于你整理问题其实是不利的。

比如你在某一篇面经中看到了问题如:”java的集合类有哪些?“,通过百度你可以知道有三类集合类List、Set、Map,List对应的元素有ArrayList、LinkedList、Vector等。同时了解他们各自的差异是什么,在哪些情况下可以使用哪些情况下不适合使用。循环往复,你就会对整个知识体系有深刻的了解。(下图是我自己用Typora整理的一些知识框架。不论是复习总结还是面试前备战都很方便)

同时在每次面试完之后,你都可以根据你这次面试中不会的知识点,对你的知识框架进行补充。久而久之你的知识体系就会很全面完善。

二、算法部分

算法部分主要包括笔试部分+手撕算法部分。以我面了N家公司的经验下来,算法在很多公司的占的地位还是比较重的。部分公司还会考察SQL手写和多线程的编程。我个人的话,由于我的leetcode题刷的比较多,算法不太算是我的弱项。因此我坚持每天刷一题算法题+SQL练习题。有时候会写一些常见的设计模式的题如单例(饿汉/懒汉)、线程交替打印这样。确保自己的手感不会太差。一半leetcode刷完前200道题面试就基本不会有太大问题了。

三、计算机基础部分

这块的话,我承认我有赌的成分。对计算机网络的话一般我的面试考察的不算很多,仅仅是可能面试官的技术栈与你相差较大的时候,会问一些问题。但问题一般比较固定,比如TCP三次握手四次挥手,输入url的过程。为什么有time_wait,复习的方式的话也是按照面经整理出自己的知识体系,然后不断补充就可以。操作系统的话也是类似,了解基本的线程进程的差异云云即可,有了解linux的话会是加分项。(当然如果你的志向是大厂的话,我建议提早多复习这块内容,因为这么久面试下来,大部分大厂后端的语言都是不一样的,所以面试官很可能着重考你这块内容。)

四、项目相关的知识

其实这一块的话,与计算机基础的部分重要性接近。比如我使用了Springboot,那么你必须了解IOC/AOP的概念和原理。如果你用过redis的话,了解基本的持久化方法,基本的数据结构等等。mysql了解基本的索引种类、Innodb和myisam引擎的区别,四大隔离级别以及解决了什么问题。复习的方法同JAVA基础一致,整理基本的知识框架在不断填充。

五、最后

按照上述的方式学习,可以使你对后端有基本的认识,同时如果能构建好自己的知识体系,相信你的面试一定是如鱼得水的。

海康威视一面:☑️

问:static的作用?

答:Static可以用于修饰成员变量和成员方法,我们将其称之为静态变量和静态方法。静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

问:final的作用?可以修饰哪些东西?在什么情况下使用呢?

答:1、被final修饰的类不可以被继承;2、被final修饰的方法不可以被重写;3、被final修饰的变量不可以被改变。类,变量,方法。不希望当前修饰的元素被改动或重载的时候使用。

问:抽象类和接口的区别?

答:抽象类中可以有实体方法,但是接口不可以。

问:创建线程的方法?你常使用哪些?说一下区别?

答:四种,继承Thread类;实现Runnable接口;实现Callable接口;线程池创建。常使用继承Thread类和实现Runnable接口,实现Runnable接口更好,因为JAVA是单类继承,实现接口灵活性更高。

问:了解concurrenthashmap吗?

答:concurrenthashmap采用分段锁,其将哈希数组分为多个segment+HashEntry,对每一个segment进行上锁,从而允许多线程同时访问同一个哈希数组,解决了原有hashmap线程不安全的问题。

问:put和Get的流程是什么?

答:put采用hashcode()获取对象值,再对该值采用hash()进行运算,这种被称为rehash,紧接着再采用indexFor的方法计算具体的下标。然后判断是否是首次创建hashmap,要采用合适的遍历方法进行遍历与原有元素是否相同,相同覆盖原有数据,不同则插入(链表遍历或红黑树遍历)。

get则和put类似,只不过需要判断是否为空,如果为空则key=0,另一方面采用equals()进行判断。

问:什么是视图?

答:视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。

问:存储过程?

答:存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

用友公司校招一面:☑️

问:如何保持持久登陆?如何设置cookies的有效时间?

答:采用session和cookies进行持久化登陆。

问:hashset如何保持元素唯一?

答:hashset保持元素唯一主要靠两个方法,一个是采用.hashCode()+equals()的方法。

问:你平常有了解哪些Java的知识?

答:开始挖坑。。。。(说了一点hashmap说了一点java回收算法,JVM什么的)

问:为什么要学JVM?

答:。。。。很坦率。。。为了应试。

问:先介绍一下hashmap吧。

答:hashmap底层采用数组+链表/红黑树的方式。

问:介绍一下JVM的组成结构吧?

答:JVM主要分为三部分,

1、类加载器,类加载器负责加载字节码文件,即java编译后的 .class 文件。

2、运行时数据区,运行时数据区负责存放.class 文件,分配内存。

运行时数据区又可以划分为5个部分,

(1)方法区:负责存放.class 文件,方法区里有一块区域是运行时常量池,用来存放程序的常量。

(2):分配给对象的内存空间。

(3)虚拟机栈:每个线程独享的内存空间。

(4)本地方法栈:本地native 方法独享的内存空间。

(5)程序计数器:记录线程执行的位置,方便线程切换后再次执行。

3、执行引擎

问:如何判断一个垃圾可以回收呢?

答:采用可达性分析法和引用计数法。

问:介绍一下OSI七层模型和TCP/IP五层模型吧。各层都是起什么作用呢?

答:OSI七层模型包括物理层,数据链路层,传输层,会话层,表示层,网络层,应用层。

TCP/IP模型则是物理层,数据链路层,传输层,网络层,应用层。

问:介绍一下Spring底层采用的设计模式?介绍一下抽象工厂?与普通的抽象工厂模式有什么区别呢?

答:工厂模式代理模式(AOP动态代理),模版模式策略模式(第一个地方,加载资源文件的方式,使用了不同的方法,比如:ClassPathResourece,FileSystemResource,ServletContextResource,UrlResource但他们都有共同的借口Resource;第二个地方就是在Aop的实现中,采用了两种不同的方式,JDK动态代理和CGLIB代理),单例模式(例如创建Bean容器)

问:如果我要实现一个多实例要怎么做呢?

答:将bean的作用区修改为prototype。

3.19 神策数据一面面经:☑️

问:什么是hashcode?一般怎么用?√

答:hashcode就是采用哈希函数计算出来的值,一般为了用于快速存取数据时候使用的。

问:hashmap是线程安全的吗?如何实现一个线程安全的hashmap呢?√

答:hashmap不是线程安全的。三种办法吧,1、手动进行同步。2、采用hashtable。3、采用更好的concurrenthashmap。

问:concurrenthashmap你了解的怎么样?get的过程是怎么样的?√

答:concurrenthashmap采用数组+链表/红黑树的结构,在jdk1.7前采用segment+HashEntry+链表的形式,在JDK1.8中改用Node数组+链表的形式来进行上锁。

get的过程主要分为首先判断是否为空,如果为空则默认是对第0号元素进行搜索。否则则采用 .hasCode()算法计算一个值,再对这个值计算相应的hash值,根据这个哈希值进行检索。

问:有哪些常用的垃圾收集器?有什么区别呢?√

答:一共七种,serial收集器,parallel new收集器,Parallel Scavenge 收集器,CMS收集器,serial old收集器,parallel old 收集器,G1收集器。serial系列采用单线程进行数据收集,parallel采用多线程进行数据收集。parallel scavenge收集器则更强调吞吐量,吞吐量是用于用户线程的时间/CPU时间。G1和CMS收集器则均采用并行处理的过程,加快了垃圾收集的效率。但G1可以有效处理浮动垃圾,而CMS不行。

问:线程和进程的区别?更详细呢?进程的通信方式?线程通信的方式?√

答:线程是计算机调度的基本单位,这些线程共享同一块内存,线程之间可以共享对象、资源,如果有冲突或需要协同,还可以随时沟通以解决冲突或保持同步。进程是通道/命名通道,消息队列,信号量,内存共享。线程则是采用wait()/notify()/notifyAll().

问:Object类的方法有哪些?(其实在引导我讲线程通信。)√

答:.wait() 和 .notify() 和.notifyAll()和.hashcode()和.equals();

问:.wait()和.sleep()区别?.wait()需要先获取锁吗?√

答:.wait()释放资源而.sleep()不释放资源;.wait()需要先获取锁,原因是wait()的原理是先将线程放到阻塞队列,再释放对应的锁。

问:spring是什么?什么是切面?√

答:Spring是Pivotal在掌控的一套Java EE开发平台,让Java开发人员更容易开发大型、复杂、产品级的服务器端应用;切面是指在业务代码中被重复使用的一段代码段。

问:TCP和UDP的区别?应用场景有哪些?

答:TCP是全双工的可靠连接,采用三次握手,四次挥手来建立和断开对应的连接。同时还会采用滑动窗口来进行流量控制,慢启动、快重传、拥塞避免、快恢复的算法来进行拥塞控制。

UDP则是不需要建立连接,其采用尽全力传输的机制,所以其传输是不可靠的,但是其传输的速度较快,也较为便捷。

应用场景,TCP:可以用于传输大批量的数据,且需要可靠连接的情况。UDP:用于视频传输,这样即使少传一两帧也不会影响视频的观看。

问:http用的哪个?http的状态码有哪些,500,400,404?200是什么?http的方法有哪些?

答:TCP,

404,找不到网页。

500,服务器内部错误。

400,服务器不理解的语法错误。

503,服务器暂时不能服务,但稍后能够恢复。

GET方法请求指定的页面信息,返回实体主体。该请求是向服务器请求信息,请求参数会跟在url后面,因此,对传参长度有限制的,而且不同浏览器的上限是不同的(2k, 7~8k及其他)。由于get请求直接将参数暴露在url中,因此对于一些带有重要信息的请求可能并不完全合适。

POST请求是向指定资源提交数据进行处理请求,例如提交表单或者上传文件等。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。post方法没有对传递资源的大小进行限制,往往是取决于服务器端的接受能力,而且,该方法传参安全性稍高些

PUT方法是从客户端向服务器传送的数据取代指定的文档的内容。PUT方法的本质是idempotent的方法,通过服务是否是idempotent来判断用PUT 还是 POST更合理,通常情况下这两种方法并没有刻意区分,根据语义使用即可

DELETE方法请求服务器删除指定的页面,DELETE请求一般会返回3种状态码:

200 (OK) - 删除成功,同时返回已经删除的资源

202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)

204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)

OPTIONS,允许客户端查看服务器的性能。(常见的是跨域预检Preflighted Reqeusts方***采用该方法)。一般来说,开发中用到该方法是用来获取服务器支持的请求类型或者查看服务器类型,来确保接下来发送的请求够安全。该请求方法的响应不能缓存。如果该URI是一个星号(“*”),OPTIONS请求将试图应用于服务器,而不是某个指定资源;如果该URI不是星号,则只能用来获取该资源通信中可用的选项。

HEAD,类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。

CONNECT,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

TRACE,回显服务器收到的请求,主要用于测试或诊断。

问:有100亿个数,用什么样的数据结构去重?需要多大空间?

答:如果是set集合存储的话是232*32bit=>16GB大小。最佳答案是bitmap,用每一位去存储一个数据,int的范围是232 ,因此最大的空间是2^32bit=>0.5GB大小

3.27 神策数据二面:☑️

问:hashCode怎么实现的?

问:hashtable?

问:hash的散列函数怎么理解?为什么hashtable初始长度是2的次幂,这样有什么好处呢?

问:java有哪些锁?CAS有什么问题?锁升级有了解吗?

问:进程、线程、协程、纤程。

问:有100亿数据,保存前10000个,该怎么做?内存太大了怎么做?

问:ThreadLocal有了解吗?

问:什么时候用多线程,什么时候用多进程?

问:同步方法有哪些?

算法题:有序数组去重?

4.2 神策数据三面 ☑️

很牛的大佬。。。

问:你觉得自己是个怎样的人。

问:你觉得你的舍友觉得你是怎样的人。

问:给你一分钟如何让我记住你。

问:你还有啥想问的?

3.25 美团 一面:❌

问:JAVA范型怎么实现的?

问:虚拟内存是什么?虚拟地址是怎么转换成物理地址的?缺页是怎么回事?

问:TCP/IP五层模型?从传输层出发,用户的通信是怎么样的?经过哪些层哪些协议。

问:垃圾判定的算法?GCRoots有哪些?怎么设计?

问:线程共享的内存模型是什么样的?(提了一下共享内存和私有内存对应关系。。。反而被怼了。)共享内存为什么和堆对应,为啥私有内存又和栈对应?

问:HashMap底层原理?

算法题,拓扑图中是否有一条工作路径?

3.26 京东物流 一面:☑️

问:了解transient 吗?,了解序列化吗?那么在进行序列化的时候,我们不想保存某些数据该怎么做?

问:了解hashmap吗?hashmap扩容?hashmap哈希数组是怎么样的?初始长度?

问:hashmap为什么用链表?多长的时候转换为红黑树?为什么要转换成红黑树?

问:多线程了解吗?sleep和wait的区别?wait是哪个类的方法?sleep呢?

思考题:如何不采用中间变量交换两个数字?

思考题:煤老板有3000吨煤,一辆火车可以拉1000吨煤,每走一公里消耗一吨,煤厂到集市有1000公里,请问要怎么才能运最多的煤去卖掉?

开放题:谈谈你对5g的看法?怎么用到物流中呢?

4.8 京东物流二面:❌

问:介绍一下用户的注册登陆是怎么实现的?

问:乐观锁是怎么实现的?具体介绍。

问:介绍一下Cookie和Session?(不会有安全性吗balabala)

问:介绍一下你了解的内容?各个方面?

问:介绍一下GC?新生代怎么转移到老年代?

问:Spring中容器是怎么管理的?

问:虚拟机栈是什么时候会进行压栈呢?

问:Synchronized是公平的锁吗?

问:线程并发相关的?

问:哪些树适合用于排序?红黑树的旋转怎么做?二叉平衡树怎么左旋右旋?堆的空间复杂度?

3.27 便利蜂一面☑️

主要是盯着项目死命问。。。提醒了项目复习的重要性。

算法题:给定数组nums,从中取出一个子集,使其元素和可以被3整除,求这个子集和的最大值?怎么优化呢?(剪枝)

问:Synchronized原理?CAS原理?

问:项目中的大致流程,是先下单支付后再扣除库存还是扣除库存后再进行下单操作。

问:令牌桶怎么做的?能不能做到固定时间内发放特定限流10个?

问:测试怎么做的?测试要达到的效果是什么?那有没有出现超卖的情况?

问:有没有遇到超卖的情况?事务了解吗?在数据库中怎么实现的,大致分为哪几块?

3.27 便利蜂二面❌

问:秒杀系统怎么做的呢?

问:注册和登陆怎么实现的?密码是明文保存的吗?如果考虑使用加密算法的话,你会选择什么加密算法呢?

问:如何保证用户注册的名字是不一致的呢?

问:cookies和session的原理是什么?怎么保持用户的持久登陆?

问:你的购物系统是怎么实现的?

问:如何保持用户的名字是不一致的?为什么要设置主键?除了设置主键呢?

问:如何设计一张包含国/省/市/县的表,同时该表需要满足如何进行设计?

4.2 乐元素校招一面:❌

SQL题目,有一张SC表,查找对应的学生的总成绩?(被怼了。。。。)

问:了解NoSql吗?redis怎么使用的?如果用户名重复了怎么办呢?

问:接口限流?令牌桶算法?还有吗?自己怎么实现一个令牌桶呢?

问:线程池有了解吗?拒绝策略有哪些?阻塞队列有哪些?

问:java的集合类?哪个Map能保持原有的插入顺序不变呢?

问:用过Linux吗?

问:volatile关键字是用来干嘛的?实现原理?

问:String类能被继承吗?final加在方法上意味着什么?

问:反射了解吗?怎么通过反射获取对象的一个属性?(get)

问:设计模式了解吗?怎么实现单例?有哪两种?怎么实现的?采用Synchronized实现单例性能低怎么办?还有更简单的方式吗?

问:AOP了解吗?jdk动态代理大致怎么实现的?除了jdk的还有哪种?一般用在什么场景呢?

问:如何解除死锁?死锁的四大必要条件?

算法:1、深度优先进行层次遍历。

2、最长回文子序列?

3.31 瓜子二手车摸底网:☑️

询问项目,(项目有待加强,同时基础知识需要深入了解。)

问:采用Synchronized进行上锁,那么多个线程进行访问的时候会有什么问题呢?(产生OOM的错误。)

问:了解分布式锁吗?

问:你给我介绍一下悲观锁和乐观锁吧。

问:有了解JVM吗?介绍一下?运行时数据区是怎么划分的呢?都存放什么数据呢?

问:方法区在jdk1.7和jdk1.8中有什么差别呢?

问:了解线程池吗?线程池的七大参数?线程池一般如何设置核心线程数?

问:为什么要设计线程池?有什么好处呢?

问:有使用过AOP吗?那你的事务是怎么做的呢?Transactional是怎么实现的呢?(就是AOP啊弟弟。)

问:了解对应的Synchronized的原理吗?锁升级是怎么做的?其中偏向锁是怎么升级的?怎么判断是同一个线程?

问:了解对应的垃圾收集器吗?CMS收集器存在的问题?(采用的标记清除算法。有内存碎片。)

问:用过对应的hashmap吗?hashmap和hashtable的区别?hashmap能放空值吗?

问:hashmap为什么要采用红黑树的方式呢?

问:hashCode()是怎么实现的呢?为什么重写了hashCode()还需要重写Equals()呢?

hashmap添加元素的时候,怎么判断是否相同的呢?

问:lock和Synchronized有什么区别呢?Lock的底层实现是怎么样的呢?CAS一定是乐观锁吗?

算法题:

1、判断有环;

2、层次遍历二叉树;

4.6 瓜子二手车一面 ☑️

问:项目云云。。。

问:为什么想到要用乐观锁这样的方式?

问:介绍一下乐观锁和悲观锁的方式?哪些JDK采用到了乐观锁或悲观锁的思想?

问:lock采用的实现方式是什么呢?

问:如何解决可重入呢?如何判断当前获取锁的线程是哪个呢?

问:了解JVM吗?分配一个对象的时候,会是一个怎样的流程?

问:那么有没有特殊的情况呢?

问:如果有一个java.lang.String的类,我们又重写了一个类似的类,那么能进行类加载吗?为什么要这么设计呢?

问:如何确定一个用户登陆了呢?cookies原理?session原理?cookies和session之间的区别?

问:输入一个url会发生哪些过程?

问:三次握手四次挥手过程?

问:http请求的方法有哪些?

算法题:合并有序数组.

4.8 瓜子二手车二面:☑️

介绍项目,然后被怼你这怎么属于秒杀啊云云。。。

问:有使用过多线程吗?

问:有一个场景,有十个线程,我想每个线程计算完结果后再使用主线程进行计算,该怎么做?

问:介绍悲观锁和乐观锁?介绍使用场景?

问:介绍synchronized底层原理?

问:Spring如何解决循环依赖?IOC依赖倒转原理?

问:spring如何维护bean呢?Autowired注解一般加在哪里呢?

问:有实现事务性吗?Transctional注解是怎么实现的呢?

问:mysql聚簇索引和非聚簇索引?B+树的结构?

问:红黑树的左旋和右旋?

问:mysql的默认隔离级别是什么?都有什么不同?怎么实现的可重复读?

问:JVM内存分区?新生代和老年代分区的比例?eden和Surivior区分区的比例?

问:一个大对象会在GC中怎么分配?

问:线程池七大参数以及对应的作用?

算法题:

1、设计单例懒汉,高并发下呢?

2、在单链表找一个环的起始节点,不采用额外的空间复杂度。(快慢指针相遇)

4.8 施耐德校招二面:☑️

(一面是群面,没啥意义。。。)

问:程序读取对应的硬盘,CPU需要一直参与吗?

问:令牌桶算法?new一个对象,如何查找这个对象?

问:一个String[]数组如何实现随机存取?怎么知道String的大小?

问:链表和数组的区别?数组如何实现随机访问?

问:你觉得数据结构起到一个什么样的作用?

问:你觉得树一般用来做什么样的问题?

问:mysql底层的索引是B+树吗?B+树和B树有什么区别?

问:TCP和UDP有什么区别?UDP的适用场景有哪些?

问:mybatis的作用?redis为什么快?

问:对象创建后,我们怎么去获取呢?

4.16 施耐德校招三面:☑️

emmm,就跟hr开心的聊天了。

4.18 贝壳找房一面:☑️

问:什么是令牌桶算法?

问:常见集合类介绍一下。

问:hashmap底层的架构?resize怎么做的?为啥要采用红黑树的方式?

问:concurrentHashmap介绍一下?

问:介绍一下GC?介绍一下哪些可能是GCRoots?

问:如何创建线程?如何保证线程安全?

问:synchronzied锁升级的过程?CAS是什么,怎么做的?

问:了解线程池嘛?介绍一下参数?介绍线程池的流程?

问:做过单点登录吗?聊聊是你你会怎么做?

问:做过JVM调优嘛?怎么排查SQL?除了Explain还有什么方法?

问:线程A打印1,2,3.....自增,线程B打印A、B、C;要求最后输出1A2B3C.

问:SQL题,找出每个学生大于80分的科目数目。

4.18 贝壳找房二面:☑️

二面问项目问的比较多,基本怼着项目死问。

问:什么是令牌桶算法?和漏桶算法的区别?

问:Spring和Springboot的区别?

问:Spring的特性了解吗?(指IOC和AOP)

问:如何实现的登陆?cookie保存信息不会出现安全隐患吗?(指黑客伪造cookie进行登陆)

问:如何计算一个线程在service层、controller层操作时所耗费的时间。或者说要采用什么数据结构进行计算?

4.18 贝壳找房三面:☑️

hr面,就聊了下目前的offer情况,个人情况。小姐姐还是很好看的=3=。

4.25 Shopee一面面经:

自我介绍。。。(说自己想找java开发hhhh,然后面试官笑着告诉我我们没有java开发的岗位。)

问:介绍一下常见的集合类?

问:hashmap?存在什么问题?怎么让他并发安全?

问:concurrentHashMap分段锁怎么做的?

问:有读过什么书吗?

问:介绍下JAVA的内存模型?那JVM的内存模型呢?(他其实想问JVM的结构我认为,但是说成了内存模型。)

问:执行时数据区内的数据都有什么分别?

问:介绍下GC?了解CMS回收器吗?

问:介绍大致流程?你聊到了STW,那么STW有几次呢?确定是一次吗?(实际是两次.....初始标记和最终标记。)

问:redis有几种数据结构?持久化有哪些方式?Zset的数据结构有了解吗?

问:你介绍下悲观锁和乐观锁吧?乐观锁能防止超卖吗?(还要对应库存校验)

问:你介绍一下输入一个url,大致的流程吧?

问:emmm,服务器仅仅是收到请求就返回了吗?有没有考虑过高并发下的一些情况呢?

问:有哪些了解的框架吗?你项目使用了Springboot,那为什么用这个框架呢?(我。。。。就用来学习的啊。。。。)

问:Spring的bean管理流程有了解吗?

算法题:

1、非递归中序遍历

2、合并链表(写一半中间断网了,估摸着面试官以为我找答案去了?回来听着语气就不太好了hhhh,sorry啦。)

反问:公司技术栈和编程语言?(面试官:你不知道吗?我们主要编程语言是golang。。。场面一度很尴尬。。。后悔问了。。。)

写在最后的话:

感觉自己的春招可能就快要结束了,剩下的机会也不多了,比较可惜的是最终没有能拿到一个大厂的offer。(哇的一声就哭了TAT)个人感觉的话还是准备的时间太短导致错过了很多的机会。(当然我太菜也是一个原因)。秋招的学弟学妹们还是好好准备啊,也祝大家能早日找到大厂的offer,不要步我的后尘。

PS:如果有人想要知识框架的话可以跟我要哈。但个人还是觉得自己总结一下会比较好。

更多模拟面试

全部评论

(47) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐