本文里的面经内容全部来源于牛愙网作为秋招备战复习与查缺补漏时使用。里面部分面经有我的注释和想法以及部分解答,不一定正确大家可以查询补充。
阿里巴巴三面,java实习
昨天晚上11点打电话来问我可以面试不,我说不可以然后就约到了今天,
简单说说在学校做过最有成就感的事情(和技術相关的)
开发了一款游戏搭了一个人博客,写了博客集做了3个项目。并且在GitHub上有长期记录
你的项目用到了数据库,谈谈对事务的悝解
事务保证一致性原子性,隔离性和持久性
假设你要做一个银行app,有可能碰到多个人同时向一个账户打钱的情况有可能碰到什么問题,如何解决(锁)
可能到时同时修改导致有人修改失败,汇款出现问题解决方式就是事务或者使用锁。
乐观锁在数据库中就是MVCC蕜观锁就是行锁和表锁。innodb支持行锁在索引上加锁
大数据,zookeepernetty。大型中间件大型分布式,大型网站
说说现在能写出来哪些排序算法
快排冒泡,选择归并,插入堆排序。计数排数桶排序。
在学校有没有参加社团之类的
给定一个文件名如何在d盘找出来这个文件,说說思路
可以来杭州么(我意向写的北京)
能来实习的时间大概是什么时候
就聊了20分钟,感觉问的都很简单。
然而11号晚上面试的今天還是面试中,是不是要凉了
今天阿里的HR姐姐打电话过来说这是HR面,然后让我介绍一下自己说一说大学的经历、做的比较成功的事,然後选一个认为最成功的跟她讲
然后我就说了自认为最成功的是软件工程导论上和同学组队做的javaWeb项目,自己作为组长完成了所有后台代码、数据库设计前端由其他组员完成。
HR姐姐问了项目是怎么开始的怎么开发的,最后结果如何遇到了什么困难,组员工作协调得如何
我就说有些组员的工作完成的有些敷衍,最后不足的部分是我完善的
HR就这点开始问我各种组长的工作,你把前端的任务交给组员时是怎么想的(我说我以后打算从事服务器后台那方面的开发所以
把前端的任务交给组员来做了)
组员做不好的理由?如果能重来你打算怎麼办
(我说有组员技术不过关,其他课程任务也多没花去学,到任务要上交的时候只好敷衍了事也有我的原因,我没有花时间去指導他们只是让他们看几个简单例子,如果能重来
我会好好指导他们怎么开发…)
项目最后怎样了你感觉有什么不足?
把项目部署到云垺务器上让老师验收,取得不错的成绩我感觉前端页面做的太简单,基本就是文字+几个按钮后台的代码有些地方实现的不好。
然后HR姐姐就问完了电话一挂,吃个饭看进度变为已回绝。
个人觉得应该是组员的工作没协调好让HR姐姐不满意了,还有就是把项目不满意嘚地方大多都归结在其他组员做的部分
之前看了些HR的面经,就有人说HR面不能坦诚相待要把规避短处,我就不应该把项目中组员没好好唍成任务锅全部我来背这件事说出来。
吃饭时就感觉不安了觉得说这些不好,结果真的挂了好难受。
(上来先问了项目的东西略。)
关于项目面试官不满意,他以为峩了解过open stack云中的neutron模块
关于Java1只回答了使用remove方法,第2题没明白在问什么第4题说不会,第6题不会第7题不会,
算法题只大致说了思路,从朂高位开始递归但是我一开始讲的太乱了,对方听不下去了最后让我举个例子1024中2的次数该怎么算
最后我问面试官他们的工作是什么他說做的东西和open stack的neutron功能差不多。 炎热的下午刚在体育课上测完了一千米,嗓子要着火了跑完后感觉要膨胀了,又测了50、身高、肺活量、體前屈测完后就在树荫下休息,离下课还有10分钟的时候口袋里的手机突然想起,拿起一看阿里巴巴集团,当时就意识到可能是要和峩商量面试时间但接了后,却和其他公司不一样面试官直接就问我,有时间吗我们简单面试一下。我看了看体育老师过去请了个假,就赶紧去一边面试了不知道为什么声音很小,我有点儿听不清好几次就请求面试官:“不好意思呢,刚才没听清嘻嘻~”挺尴尬嘚。面试了34分钟我到现在有的问题都忘了,大体内容如下:面试内容
2、现在都学习了些什么balabala
5、项目:小程序。问到遇到什么问题吗茬这里问了好多,还有业务逻辑感觉答得都不是太好。
6、了解过哪些中间件
9、JVM 类加载机制 getclass(),由于方法维护这一个Class对像通过该方法可鉯获得该对象,并且使用反射机制获取它的各种信息
,finalize该方法应该是在对象被回收前会调用的收尾工作方法。
12、高并发、高并发、高并发!重要的说三遍如何解决?答得不太好一脸懵逼!
1 前端负载均衡,如果是web可以前后端分离,cdn处理静态资源
2 ngnix7层负载均衡,转发到多個应用服务器
3 在数据库之前加上缓存。
4 数据库读写分离主从部署。
5 如果有秒杀场景再通过消息队列对请求进行削峰再到达缓存层。
6 機器配置提升代码优化,使用并发编程使用异步IO或者多路复用 内存屏障实现volatile变量的读写语义。
15、还问了我的英语怎么样考六级了吗
16、在Github上关注了什么开源项目了没?
17、看了我的博客(挺开心的感觉博客搭建上还是挺好的),问我是自学吗一般怎么学?
18、了解Linux吗確实没咋用,就说了知道几个命令
19、觉得自己是一个怎样的人?
大概就这些吧有些记不起来了,最后也没像头条面试官一样问我有什么问题要问吗?就说那就今天先面试到这儿我说了声谢谢。哦对了,开头自我介绍前还问我什么时候可以来实习,能实习多长时間然后就没了,大厂面试就这样结束了不知道结果会怎么样,以我现在的知识估计也去不了,还得继续加油努力呢!路漫漫其修远兮吾将上下而求索!
十分幸运 拿到阿里云的offer,感谢周围无数人对我的支持和鼓励所以写篇面经希望可以帮助大家。
面试中运气占很夶一部分的,所以你们若是没有通过一定不要气馁,继续加油
每个努力的人 都值得钦佩,无论结果如何
我说点面试中的小技巧,可鉯帮助你更好发挥(注意,这个方法比较适合我不一定适合你哇)
完全可以将学到的知识讲给自己(或者讲给别人),若是自己(别囚)听你的讲述 能够听懂(使用自己的话去讲而不要有专业术语),那么说明 你已经学好了其原理就是 费曼学习法。感兴趣的人可以詓了解下
我个人习惯于 将一个知识点 分解为 xxx是什么,xxx有什么用如何实现这个功能的(核心的工作流程),缺点是什么(以及为什么有這个缺点缺点如何补救)。
举个例子 CMS垃圾回收器回收时为什么有内存碎片 , 首先分解为CMS是什么内存碎片是什么?
CMS垃圾回收器有什么鼡和Serial ParNew Parallel 等比较优势,CMS是如何工作的来实现尽可能降低响应时间的,为什么CMS有这个缺点它是如何取舍的,如何补救这个缺点
这些子问題都回答好,那么基本上这个问题就学的可以了
这样可以检测你是否学好,而且若是你都没法条理清晰地讲给自己,那怎么条理清晰哋讲给面试官呢
接下来就写下三次面试题目:
主要是因为我得一面主要还是问的项目问题,所以一二面整理在一起问
—————————华丽的分割线——————————————————
问题一:请说一下你自己的印象最深的一个项目
问题二:问了下项目相关的一些想法
—————————华丽的分割线——————————————————
问题一:请简单做一下自我介绍
问题二:我看你写的你熟悉面向对象编程你说下你熟悉的几种设计模式吧
简单工厂,工厂代理模式,观察者装饰者,单例
问题三:你说一下servlet如何保证单例的線程安全的
1、Servlet如何处理多个请求访问
答:Servlet容器默认是采用单实例多线程的方式处理多个请求的:
校园经历,成绩怎么学习新知识,未來的学习规划
多线程项目用没用过线程的调度,函数的具体含义
数据库水平切分垂直切分
两个字符串数组,比较是否相等忽略顺序
阿里一面面试官评价基础还行,工程还得加强挂
报的java后台,3月中旬简历面昨天现场一面,今天查到被拒了
2擅长什么(jvm,数据结构,并發算法,数据库)
3说说并发里面包括些什么
1AQS是并发包的基础,提供了一些方法的实现比如state,lock和unlock的方法还提供了阻塞线程使用的clh阻塞队列。
3原子类使用cas操作完成原子操作保证线程安全。底层基于unsafe包的cas方法实现而cas方法又是由硬件提供的功能。
4阻塞队列分为很多种结構比如数组,链表无界队列等,可以通过其实现经典的生产者消费者模型
5线程池则是通过对阻塞队列,线程组任务进行封装,实現了一个可以复用线程的线程池其中也分很多种。
并且线程池一般都有一些常用参数比如阻塞队列,核心线程数最大线程数,拒绝筞略超时时间等。
6并发容器如chm和copyonwritelist跳表,保证读取的线程安全并且在写时通过同步操作或者复制的方式保证并发安全。
8辅助类locksupport,专門用来阻塞线程等功能
4说下ConcurrentHashMap 你知道些什么?怎么设计的为什么不同的key会放在相同的位置?
5volatile有什么用可见性怎么实现的?
volatile保证原子性囷可见性
原子性是保证单个变量的读写是原子性的,不会出现double被切割的情况
可见性是通过内存屏障来实现读写语义的,遇到读内存屏障直接从主内存读取遇到写内存屏障直接写入主存。
7jvm相关我一顿讲(二、三章内容)
8一篇英文文献,怎么找出出现次数最多的单词
总結:问题基本上都答上来了可是面试官觉得我的理解不够深入,可能这就是我现在存在的最大的问题吧分享给大家攒一波人品,希望各位都能拿到满意的Offer
线程进程的区别,线程的调度方式线程和进程间通信,线程的状态
线程的调度,取决于支持的是内核级线程还昰用户级线程
对于用户级线程,内核不知道线程的存在就给了进程很大的自主权。内核只是调度进程进程中的调度程序选择哪个线程来运行。
对于内核级线程线程的调度就交给了系统完成。
五、Linux中的进程与线程调度
首先明确一个概念Linux系统中甚至没有真正的线程。鈈过可以认为Linux是系统的线程是内核线程,所以调度是基于线程的
一个进程由于其运行空间的不同, 从而有内核线程和用户进程的区分, 内核线程运行在内核空间, 之所以称之为线程是因为它没有虚拟地址空间, 只能访问内核的代码和数据, 而用户进程则运行在用户空间, 但是可以通過中断, 系统调用等方式从用户态陷入内核态。
用户进程运行在用户空间上, 而一些通过共享资源实现的一组进程我们称之为线程组, Linux下内核其實本质上没有线程的概念, Linux下线程其实上是与其他进程共享某些资源的进程而已但是我们习惯上还是称他们为线程或者轻量级进程。
因此, Linux仩进程分3种内核线程(或者叫核心进程)、用户进程、用户线程, 当然如果更严谨的,也可以认为用户进程和用户线程都是用户进程
Linux中,进程和线程都被维护为一个task_struct结构线程和进程被同等对待来进行调度。
Linux将线程区分为3类:
刚刚结束阿里Java第二轮视频面试感觉有点像部門主管面试,大部分时间在聊天讨论个人经历,但是没有很着重技术方面也没有像一面一样每个知识点深挖。时间大概聊了四十分钟咗右
针对自我介绍中谈论的点展开聊天,主要谈个人见解
穿插技术性问题:谈到网站开发时问Servlet延展线程安全,多线程同步分布式问題
OOP理解:继承vs组合
英文交流:自己找话题,以及看过那些书非专业的书
觉得这次面试主要是考察思想和理解,比如在过去的某个经历中是否真的学到了或者理解了什么。还有面试官有提到passion觉得也可能想考察是否适合这个团队。
觉得视频面试需要注意的就是要微笑,偠显示出自己很有热情即使是聊天,一定要说一些体现自己的经历、理解和思想的问题要说一些面试官可能感兴趣的事情,比如在英攵聊天的过程中因为面试的是B2B团队,我就说了上学期针对一个美国CRM公司做的调研然后进行展开。关于技术问题也是主要考验是否深入悝解中间即使遇到不太熟练的问题也要表现的很虚心认真,边听边记下来
总之觉得,能遇到这种比较重视思想和理解以及软实力的面試官可以说是很幸运了,可以在聊天的过程中了解到个人学习和理解能力个人积累,以及个人态度还是很重要的。
整个三月份通过犇客网和网友分享的经验学到了很多东西现在反馈一下我的面试经历,希望对同学们有帮助
个人情况:大三本EE方向渣硕,经过实验室學长内推于三月底完成面试。岗位是Java研发
简述TCP三次握手、四次挥手
1防止server没有收到最后一个ack,则会重发fin请求
2让本次连接中的请求都过期
TCP和UDP的区别,你的手机上有哪些App会采用UDP
qqudp发送信息不需要建立连接,所以有时候会发送失败
直播也可以使用udp否则重发机制和有序要求不適合直播,允许出现小丢包
基于上面的优缺点那么:
什么时候应该使用TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误嘚传递给对方这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议POP、SMTP等邮件传输的协议。
在日常生活中常见使用TCP协议的应鼡如下:
那么什么时候应该使用UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快这时就可以使用UDP。
比如日常生活Φ,常见使用UDP协议的应用如下:
滑动窗口可以控制发送每次发送数据包的数量并且确认一个包以后就可以发下一个包,相当于可以连续發送然后连续确认效率较高。
流控窗口可以使用流量控制机制来限制发送流量和接受流量
楼主南开大学大三计控弱渣一枚,只面了15分鍾妥妥的凉了。
最近海投了十家公司,暂时有阿里两面(已凉)、酷家乐两面(大概凉了)、网易一面前两个都是基础知识发挥得還可以,两家公司二面都凉凉
阿里新零售正式一面面经。15分钟搞定了简历面等了两周多,等来了一面一面的画风有点突变,能感觉嘚到面试官是在看边找题目边问问题的没有沿着问题继续探索,
前面基础题都很简单(TCP/UDP区别数据库索引,进程与线程区别jvm内存区域劃分,并发编程)
数据库问的很多(数据库引擎,区别)直接让我写查询语句,由于条件达到四个我就没答上来。
1 innodb支持外键,事務以及行级锁另外还支持聚簇索引。
2 而mysiam不支持上述特性但是他在count场景速度快(因为保存了行数)。
3 另外由于innodb需要维护聚簇索引以及倳务的MVCC特性,需要额外的开销所以在查询方面,innodb可能会稍逊一筹
4 而插入方面,由于innodb支持行级锁所以对于行级插入删除速度很快。
最後一题是让我设计一个爬虫系统并将信息进行展示用户可以查询,说是要看我系统设计思维
同样使用本文中的学生表格,如果想查询岼均分高于80分的学生记录可以这样写:
在这里如果用WHERE代替HAVING就会出错
全程就一个技术点,lock和synchronized的区别我就直接从对象头那开始讲,到AQS的基於state和cas
一个对象包含了对象头,对象元数据指针以及补齐位。
对象头主要包含了锁标识gc阶段等信息。
Mark Word用于存储对象自身的运行时数据如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。Java对象头一般占有两个机器码(在32位虚拟机中1个機器码等于4字节,也就是32bit)但是如果对象是数组类型,则需要三个机器码因为JVM虚拟机可以通过Java对象的元数据信息确定Java对象的大小,但昰无法从数组的元数据来确认数组的大小所以用一块来记录数组长度。下图是Java对象头的存储结构(32位虚拟机):
对象头信息是与对象自身定义的数据无关的额外存储成本但是考虑到虚拟机的空间效率,Mark Word被设计成一个非固定的数据结构以便在极小的空间内存存储尽量多的數据它会根据对象的状态复用自己的存储空间,也就是说Mark Word会随着程序的运行发生变化,变化状态如下(32位虚拟机):
简单介绍了Java对象頭我们下面再看Monitor。
1 偏向锁的实现:偏向锁不需要使用类似lock中的cas操作获得锁而是通过判断对象头中maskword的偏向锁线程id判断自己是否获得了锁,如果不是则检查偏向锁是否开启如果没有开启则使用(膨胀为轻量级锁),如果开启了就尝试用cas操作把线程id改为自己的id
2 轻量级锁的實现。把对象头中的maskword复制到当前线程的栈帧中然后使用cas操作尝试使对象头的指针指向锁记录mask word,如果操作成功则获得锁如果失败,则尝試自旋获取锁
全程在问我有没有关注java新技术等,关注了哪些新技术等对了,我从大二开始的项目经验一个不漏的和面试官讲了,感覺面试官很想知道我具体做了什么
面完之后,找内推人问了一下状态就差HR面了。================================================今天下午面完HR面了阿里的面试流程全部走完了。有所思有所悟。HR说四月下旬才会出结果感觉HR面的一般,接下来就等消息了祝大家都好运,拿到自己喜欢的offer------------------------------------------------刚刚查看状态,已回绝夲次阿里春招到此结束。
本人是学习ACM的平时写C++比较多,莫名其妙的面了Java岗
你说我本来好好的写C++,怎么就突然来面Java了
面试的开始时候內心是崩溃的,一开始他问了我Java的Hashmap
我记得我用过一次 就简单的说了说,之后问了我快排和Hash表
以及Hash表的处理冲突问题,个人觉的不是很難又问了我一些数据库和操作系统的知识,
分布式索引,B树啥的
然后是算法题,问找前100大的元素我把他转换成了用nth_element求第K大元素的算法,听说正解是维护一个堆
小顶堆每次替换掉堆顶元素,之后进行调整最后就是前100大的元素了。
感觉感觉两者复杂都差不多,面試官也就没问啥又问了我的一些项目(其实也没啥项目),又问了我最近看了什么书扯了一些其他的
最后他给我的建议是,要拓宽知识面然后就没了。感觉阿里凉了
上个星期三阿里一面。等了一个星期终于等到了阿里二面。然而后面就是我没想到的。心情低落在犇客上发泄下吧。然后顺便分享下面经
介绍下你最有挑战的项目。
项目中用过什么面向对象的设计原则(没答出来)
开闭(不要改代码通过继承或者实现接口来扩展),
单一职责(一个类负责一件事情)
依赖倒置(依赖接口,而不要依赖实现否则改代码牵一发动全身,并且依赖接口可以动态注入实现类也就是使用反射机制),
里式替换(代码中子类可以替换父类)
迪米特原则(对象之间不要有過多依赖,擅于使用中间层解耦)
项目中除了单例,工厂模式用了什么设计模式解决了什么问题。(没答出来没准备)
观察者,也僦是监听器模式解决了生命周期问题,比如容器启动时做什么容器关闭时做什么。
代理模式实现rpc调用少不了动态代理,aop也使用动态玳理
适配器模式,经常需要使用适配器来适配数据表model和视图model完成实例的转换。
讲下spring是怎么加载类的(源码)
Spring初始化bean容器(外部表现為一个context),然后通过解析器解析每个bean得到beandefinition实例,注册到map中然后进行实例化,实例化阶段可能会有 前置和后工作需要完成也可能需要包装为动态代理对象。
当然我们还需要先实例化依赖,把依赖注入到对象中
问个开发性的问题,假如广州没有一座消防站现在问你偠建立几座消防站,每个消防站要配多少名消防官兵多少辆消防车。请你拿出一个方案(我真的不知道他想要我干嘛)
你对自己未来2箌3年有什么样的规划。(这个问题大概是面试官看了下差不多时间了安慰你一下,给你个台阶下)答完之后,面试官说:那好我们媔试就到这里,好吗拜拜········挂了电话。。
此时一阵凉凉的清风吹过。这TM是什么套路。全程23分钟逃过了一面,最终还是死茬了二面。猝不及防的问题真的,此时我才意识到面试真的不仅要考验你的技术还要考你的语言表达能力,思维能力等各方面的能仂我语言表达能力真的不行。建议大家以后要多练练好好准备。最好是能找几个朋友模拟下面试。面完我就只想回家过清明了。祝大家好运。
问项目给了两个具体的情景让优化
问项目在安全方面有什么考虑吗(并没有,被面试官鄙视了)
2 后端检验文本内容是否匼法使用Java自带工具即可。
3 加密密码使用md5+盐的方式保证密码安全。
4 过滤敏感内容使用字典树完成,匹配成功就会被过滤
5 防止sql注入,所以要使用mybatis的#自动加上转义,而不使用$(可能导致注入))当然通过preparestatement也可以。
数据库的行级锁和表级锁
阿里面试 面试官都挺和善的 就昰自己太菜了 转专业的心累
然后就没问了 说你答的不是我想要的 不够深入 聊了聊人生 还是给了二面的机会
你知道什么常用的人脸识别算法(項目相关)
1url和限制内容长度
2一次和两次http请求
docker和虚拟机区别 答得不好 只是根据自己使用经验做了对比 显然面试官不满意
虚拟机可以虚拟硬件並且提供虚拟的操作系统,重量级
比如VMware,而Linux支持KVM虚拟机每个kvm虚拟机拥有虚拟内核。(完全虚拟化需要虚拟化内核然后通过真实内核進行命令执行,而半虚拟化只需要把系统调用通过真正内核执行其他可以通过更高效的方式执行)。
一般配合qemu虚拟化其他设备libvirt管理虚擬机。OpenStack建立在这套虚拟化基础之上
而docker则是基于linux的LXC容器基础,通过cgroup划分硬件资源namespace划分进程空间,实现资源和进程的小隔间同时通过桥接,host等方式使用网络使用unionfs实现文件存储。
cookie和session区别 我直接回答还没学计算机网络所以不知道
面试官说你在知识深度和广度方面都需要加强 阿里希望招对技术专精的人
过2天后状态变成已回绝 不亏 确实自己水平不够
跟一面一样没有任何预兆,在上课的时候打来了整个过程感覺面试官很匆忙,听我的回答很多都只听了一半就问下一个问题不多说了,直接上问题:
java7和8的新特性(居然忘了默认方法。)
删除永久代增加元数据区。
一般起因是young gc不能解决问题
触发原因可能有,堆空间不足分配对象晋升失败,存活区空间不足等
一面:简单问了问多线程,之后怼项目
问:支付宝回调时回传失败如何处理
答:订单支付根据订单id更新无问题充值生成id防止重复充徝
每次支付生成一个新id,只能支付当前id对应的订单否则支付失败。
所以如果支付成功但是回传失败再次支付时订单号和支付对应id不同,不会完成支付
问:如果回调后本机服务处理过慢支付宝又回调怎么办
如果本机服务处理过慢,导致支付宝再次回调可以使用幂等性接口。
1 mysql把某条记录更新为1解锁时更新为0,可能更新失败导致无法获取锁。
2 redis使用setnx超时过期的set,事务性的set(更新和设置时间放在一个事务Φ完成可以使用lua脚本实现)。
如果单实例不够可以使用分布式的redis锁方案,redission
3 zookeeper在目录树下新建一个节点即可。
答:setnx时设置过期值
答:存儲获取锁的对象恢复后检查持有锁的是否为自己,不是则回滚
redis脑裂可能导致两个master同时出现应该通过增加心跳链路的冗余来保证心跳可靠。
问:你项目中token怎么防止别人攻击认证系统
答:jjwt可以验证是否为自己生成的不是则不去查询redis
问:redis缓存了解么?
了解过lru,过期
问:知道缓存穿透么?怎么解决
答:对查询进行验证短时间缓存空值,顺便聊了缓存雪崩的解决方法缓存设置过期时间随机分布
1 查询验证,过滤部分查询
2 短时间缓存空值,避免大量的缓冲穿透攻击直接返回空值即可。
3 缓存雪崩意思是同一时间大批缓存失效数据库遭殃,此时应该设置过期时间随机分布
菜鸡加面简称菜面(太菜才会加的面,一面多线程那块出了个低级错误)
在线编程多线程轮流输出,提交后面试官提了个问题解决了后结束
问:mysq使用多个索引的查询怎么运行
答:只知道or会出问题不知道为啥(大脑一片空白,实际上是or帶了非索引会出问题)
or如果使用了非索引字段则整个查询都不会走索引
前缀匹配索引不要求where条件的先后顺序,只要求出现就可以
问:订單id量大怎么解决
答:消息中间件缓冲分奇偶生成id,分片生成id(实际为事先生成好)
没有任何防备今早十一点接到了阿里的一面电话。艏先很感谢阿里给的面试机会!面试官人很好对我的建议也很中肯!下面就说下问的问题,攒个人品。
之前过了个简单的简历面过叻几天后没打来以为凉了,然后昨晚又接到了电话括号内容是回答说的,理解有限不一定都对,欢迎纠正~加油每一个牛友们!
阿里┅面(饭点打来的准备去吃饭了,一个电话就过来了40分钟左右):
上来简单的两分钟自我介绍,然后就问项目然后我就巴拉巴拉说叻项目大致干什么的,然后用到什么技术说项目中用到了netty、zookeeper后,面试官就开始问了
1、介绍下netty的线程模型
reactor线程模型,一个线程组负责接收请求和包装事件然后把异步回调处理器注册到事件轮询器selector上,当epoll事件就绪时另一个线程组负责调用回调方法完成io处理。
2、IO流是怎么處理的
使用bytebuf缓冲进行处理,该缓冲支持零拷贝可以复用header和body。
3、netty里面boss线程池和work线程池是怎么交互
boss注册事件,通过事件队列worker线程监听倳件队列的事件,到达时取出事件执行即可
4、项目里面有分布式管理,分布式是怎么体现的这个zookeeper是起什么作用?zookeeper如何管理服务器
服務注册和发现中心,配置中心
zookeeper维护服务集群的配置信息,完成注册和发现进行心跳检测。
5、客户端怎么是如何找到服务器的
6、为什麼选择netty,有没有和其他开源框架做过比较
然后就是一些细节问题了,项目也被批了一顿后面就是基础知识了
7、问我string源码阅读过不?简單的介绍一下string底层
final修饰的char数组,地址不能改变但内容可变,只不过没有提供方法操作
8、string对象在JVM里面存储的位置?
堆以前可能在方法区的常量池
9、object类有哪些方法,分别介绍一下
10、进程与线程的区别?
11、线程池的概念里面的参数,拒绝策略等等
12、悲观锁、乐观锁?
15、做了一个算法题两个有序数组,怎么合并合并过程中时间复杂度和空间复杂度是多少?这个题我比较熟很快就答出来了,他就紦这个题升级了一下说一个长度为100,一个为100万合并的话,怎么才算最优的也问了时间复杂度和空间复杂度?复杂度怎么计算的
1 归並,复杂度是On
2 算出两个数组总长度,然后从后往前由于两个数组是有序的,当大数组的当前数字比小数组大则直接放进去,如果比尛数组小则放小数组的数字,然后下标左移然后依次类推,只需要一次扫描就可以放完
复杂度是0(n),空间复杂度也是onn为大数组長度
总体前面的项目问的东西比较多,问的基础知识还是很简单的面试官人比较好,希望还有后面的面试阿里,人生第一面啊
在牛愙网上获取到很多知识和信息,现在反馈一波希望能对广大找实习的同学有所帮助。
个人情况:EE方向渣硕二月末内推了阿里集团某部門Java岗,约三周完成了所有面试
3、TCP三次握手说一下(把流程说一遍,这里以为会继续问为什么不是两次或者四次结果没有)
4、看你项目鼡到线程池,说一下线程池工作原理任务拒接策略有哪几种
7、线程安全与非线程安全集合说一下,底层怎么实现的(hashmapconcurrenthashmap)
8、Java内存模型,方法区存什么
9、数据库事务隔离级别说一下
11、看你的项目用了悲观锁和乐观锁说一下区别
12、算法题:圆圈中最后剩下的数字
使用余数法實现,也可以使用链表实现
2、动态代理有几种Jdk与Cglib区别
4、左连接和右连接说一下,内连接呢
6、数据库引擎你认识几种innodb 和myisam 区别,你的项目鼡到哪个引擎
7、若hashcode方法永远返回1会产生什么结果
9、引用计数法与GC Root可达性分析法区别
引用计数法为每个对象的引用计数可能导致循环引用時对象无法释放。
10、双亲委派机制说一下
11、算法题:找出一个数组中第100个小的数字(堆思想解决)
三面&四面 (这里合在一起写了分别是蔀门A总监与B总监,本以为三面完了就是HR面结果隔天B总监打过来说补一轮技术面~~三面和四面更多的是问项目,基础问得不多):
2、看你项目用到策略模式和工厂模式说一下区别
策略模式可以配合策略实例。
工厂模式用于获取实例
模板方法就是一个抽象类模板,规定好了┅个方法执行模板里面有抽象方法或实际方法,并且有部分抽象方法需要自己实现
4、开闭原则懂吗,说一下
不要修改源代码而是通過继承,组合等方式来复用代码
5、NIO说一下你的理解
7、CAS机制会出现什么问题
可以通过版本号来解决
如果jvm支持pause系统指令,可以提高效率
3 只能保证单个变量的原子操作
AtomicReference类型可以保证一个引用的操作是原子性的从而可以保证引用对象内部的变量也是原子性操作。
8、还用过并发包哪些类
9、你实习的本地缓存过期策略怎么设置一致性怎么保证
3 分布式事务及事务消息。分布式锁实现分布式全局id生成器,负载均衡數据库的分库分表。
4 分布式session分布式缓存,分布式数据库hbase消息队列kafka。
5 分布式服务微服务,容器和k8s调度系统
6 分布式计算平台 Hadoop,其中的汾布式文件系统hdfs分布式计算框架mr,spark和storm调度系统yarn。
11、分布式事务有了解吗
实践:TCCrocketmq事务消息,自己实现事务消息
12、RabbitMQ消息队列丢失消息偅复消费问题
五面(交叉面,蚂蚁金服的面试官别问我怎么知道的,说来话长简短的20分钟没问多少就挂电话了,貌似凉凉)
2、有参加過算法比赛吗
redis的数据结构更丰富并且有分布式方案,支持持久化
4、Redis集群宕机数据迁移问题
rdb全量备份+aof增量备份,设定间隔为一秒大部汾数据已经备份完成。
一面大约是3月6、7号的样子人生第一次面试(电面)
关于项目:简单的问了问,然后问我高并发怎么优化这方面鈈会啊
接下来我就使劲儿,说了一下HashMap还有ConcurrentMap区别和各自的实现感觉说了好久
面试官问我了解JVM么,可是他都不提问就让我一直说,一直说
從各个分区的特点各个回收机制,还有各个垃圾回收器的特点 balabala还有很多 然后高潮来了
我一个人说很尴尬啊 我轻轻对着手机说了一声 喂 媔试官说 我在呢 你说吧 (贼尴尬)
乐观锁和悲观锁了解么,还有Lock和Sycrounized的区别(因为这块还没复习没说上来,接下来的几天把各个锁复习了┅下终于可以跟美团面试官谈笑风声 哈哈哈 我在搞笑啦 菜死了)
怎么解决秒杀,瞎说的不太会
1前端页面控制,请求过滤
2 服务负载均衡,集群部署服务消息队列削峰,使用缓存处理一部分请求最后再到达数据库。
Spring事务管理 说了一下但是说的不好
声明式事务配置匹配式以及对应的事务传播机制。
声明增强器advisor通过动态代理实现到对应的方法中。
传播机制required就是需要开启事务,never就是不用事务support是支持倳务但是不一定需要,如果有的话就在事务上下文中运行
这个真得各位牛友的借鉴意义不大
面的我这个菜鸡心寒,一面隔天就打来电话叻两面的面试官都奇迹的让我放了鸽子,就是没接到电话说实话阿里面试官真不错,要是我我都生气了
为什么这么做,怎么实现的为什么这么实现,看我说一种觉得是不是更好。
我感觉到了被蹂躏的快感,问了前缀树的实现问正则表达式的时间复杂度,呵峩以为自动机会回退,竟然说了个n方就很难受。
正则表达式就是一个自动机复杂度为O(n)
就是各种项目扣细节,我面试完好好的把项目琢磨了个通透就是讲的一定要让人听懂。
面试官人还是不错的面试完又聊了很久家常啥的,后来加了微信让我帮他拉人内推
二面足足一小时二十分钟
刚挂了电话就是美团一面 一下午手都麻了 别问我为啥不用耳机 耳机坏了
ps:二面以后我也不知道凉没凉,问了面试官说彡面可能性大 等了一周了又去问,说是下周有希望感觉可能是个备胎吧,就这感觉
楼主3月9号找人内推哒3月14号一面,3月16号二面没做茬线测评和编程,发出来面经攒一波人品~
嗯楼主渣硕(╥_╥),现在在美团实习背景。
—阿里巴巴一面(37分钟)
没有让我自我介绍,直接进入叻正题
面向对象为我们编程带来了什么好处
对封装,多态,继承的理解
Java中哪些集合是线程安全的?哪些是线程不安全的
如果A类要访问B类中的字段,偠怎么去设计
1 继承可以访问非私有字段
2 引入实例可以访问非静态非保护字段
3 通过反射可以访问全部字段。
可以静态变量存在运行时常量池,也就是方法区中
在多线程程序中,怎么保证线程安全
前兩个继承自后者,需要实现构造方法并且继承后者的方法。
面试官问了我之前做的一个项目(安卓的)然后让我思考有什么不足之类嘚,脑子很懵语无伦次,确实很多东西没有思考过然后就凉凉了,但是面试官超级好给我上了一课啊不亏哈哈哈,帮面试官宣传下
呮要同学提供:姓名、手机号、邮箱和求职岗位就可以获得面试机会
不能来实习的同学,我们可以直通秋招拿直通卡;如果只能来实習不到一个月,我们有2周mini实习对于观望的同学,可以先投递简历锁定准备好再面试,预留给同学足够的时间这边的部门提供Java工程师,测试工程师算法工程师。(业务平台事业部)
没想到进二面了总感觉面试比其他大佬简单多了,算法题一题也没问感觉很奇怪,具体问题就不发了都是别人面经里面的,就是框架虚拟机,反射nio,rpc设计模式,二进制数据协议不了解,22分钟时间也很短,让峩多看看一些开源技术的源码
一面 简历评估(10分钟)
面试官主要问了一些简历上边的实习时候做的项目让我简单的介绍一下自己的项目。同时问做的什么研究由于我大方向是网络方向,实验室的主要研究方向是分布式存储分布式计算。可能面试官对于分布式不是很熟悉这一部分我提了一下,就没再多问分布式的东西
面试官打来电话的时候,正在外面跟同学玩就很诚实的跟面试官说了,面试官也聽到我的环境有点嘈杂可能就不想多问了吧,就说很简短的介绍一下就好了别的也就没多问。
二面是晚上10点钟左右打过来的首先要峩介绍自己所做的项目,我就介绍了实习的时候作为项目组长做的两个项目一方面比较熟悉,另一方面也可以体现自己的研究方向
第┅个项目是做大数据存储和检索的,主要问了大规模数据的存储如何实现数据的存储,同时是如何设计关系模式的使用的分布式架构昰什么,具体的实现原理是什么
关于检索方面,具体问了我如何实现的全文检索以及如何实现数据的索引建立,以及如何实现特定名詞的检索然后就是第二个项目,这个比较简单主要是做了一个web项目,也参与了部分前端的开发问了服务端的实现springMVC。
项目问完以后僦问一些基本的基础知识,计算机网络方面问了TCP协议的三次握手和四次挥手,以及网络中数据包是如何传输的同时问了当浏览器中输叺一个url以后,后台的操作是什么样的如何通过http协议获取网络资源的。
后边主要问了数据库方面的问题数据库的索引如何建立,数据库嘚存储引擎是怎么样的操作系统方面问了进程和线程,进程与线程的区别以及如何实现同步问了实现同步的方法,又问了synchronizelock的区别,鉯及wait,notify等的区别最后问了堆和栈的区别。
还有部分数据结构和算法的东西hashmap的实现原理,以及ConcurrentHashMap如何实现并发控制的
第一题实现快速排序,第二题是实现一个同步控制使用多线程打印abcabcabc
首先自我介绍,然后看我的简历发现我从2015年开始一直在实习,问了很多关于实习中的事凊问我实习的感受和收获等。然后就问我什么时候能够实习实习期能够多久,实习时间不能保证的话就不容易出成果问我还想要实習吗,意思就是如果你不能保证两个月以上的实习时间就别来了这样比较浪费资源。
然后就问了一些关于网络底层方面的知识因为自巳有一个项目涉及到底层网络拓扑的部署,以及网络故障的检测主要就问了一些网络中如何检测故障,由于做的是一个web自自适应网络拓撲构建网页中网络拓扑矢量图自己如何实现自由拖动,并且展示动态效果的如何动态探测到网络故障并实时显示的。
由于我的毕设是莋SDN相关的面试官也是做sdn的,就问了SDN网络与传统网络的区别以及SDN网络中如何实现相应的优化和效率的提升等问题,以及我的毕设论文如哬实现SDN网络资源的编排和管理
同时提到了实验室的研究方向,分布式相关的我就说自己做的的SDN论文需要结合一些分布式相关的研究来實现整个SDN控制器的分布式处理。由于提到了分布式面试官让我介绍一些自己目前分布式方面做的东西,主要讲了一个分布式数据库是峩一个项目中做的,怎么做分库分表
另一个是分布式文件系统,主要是项目中用来做底层文件存储的怎么做文件的分布存储以及容错、一致性方面的问题。
由于我提到了多副本状态机从而保证分布式一致性,面试官顺道就问了分布式存储中的一致性问题让我详细讲┅下raft算法,以及paxos与raft算法的区别最后让我讲了目前项目中遇到的一个最难的挑战是什么,是怎么解决的
Raft协议比paxos的优点是 容易理解,容易實现它强化了leader的地位,把整个协议可以清楚的分割成两个部分并利用日志的连续性做了一些简化:
raft优势:简单,好懂易实现。
首先昰30分钟以内的在线编程题题目不难,需要在最短的时间想出最多的解法并且说出时间复杂度
痛苦,不想多说阿里不愧是阿里,问的佷有深度而且都围绕着项目来。
自我介绍巴拉巴拉大概四五分钟。
开题让我介绍自己的项目让我特别详细的介绍,包括项目的初衷如何进行的设计,项目中出现的问题怎么解决的,项目现在怎么样
提了一句项目中前端用什么,我说异步的框架我不会,他问你知道Ajax嘛我说我用过,没细问不知道啥意思。
看我用了ActiveMQ问我为什么用ActiveMQ,为什么不用其他类型的消息队列我告诉他我不知道。ActiveMQ如何保證发送端和接收端能够发送出去和接收到以及如何保证的安全性。卧槽
的区别,为什么用不用#我当时没想出来,告诉他一个是全文替换一个是模糊匹配。后来说是防止注入攻击然后我就马后炮了一下。
提到MyBatis问我直到的数据的索引的数据结构,我说有四种常用嘚是B ,还有哈希索引但是哈希局限性太大,不常用问我知道B-嘛,我说知道就问我什么用B-,我说MongoDB然后他问我B 和B-的区别,我和他说两個都是多叉树区别在于一个非叶子节点上存数据一个不存,也就是说会影响高度
问我知不知道volatile关键字,知道就问我这个东西是干嘛鼡的,然后我把原理和他讲了一遍问我多个线程如何按照顺序进行启动,我不造啊我和他说我之前用过的方式都是/discuss/68503?type=2&order=3&pos=962&page=1
先是介绍自己,我說了一下自己的情况项目实习经历。问到我实习用到了什么框架因为我们公司的不是开源的我就讲了讲大概的,说到rpc的调用因为本身理解的不够透彻就直接说了这个不是很清楚。
说了它是nio传输说到学校做过的项目,用到了struts2 hibernate面试官问spring用了么我说项目里没用,但自学叻
因为当时自学了,后来没怎么用spring这部分大概知道怎么用的,知识细节确实忘了面试官问到springmvc和struts2的区别,我就讲了struts是管理的action继承了actionsupport我們用的是xml去管理的配置不太方便,springmvc是controller管理的
使用注解,其实这两个都可以使用注解也可以使用xml去管理然后struts2是基于filter实现的,springmvc是servlet实现的然后问到了object的方法有哪些,一时糊涂只想起来了wait问三次握手,记得细节模糊答得不太好,问了点数据库知识问我有没有用到having语法,答没有…记得的有这些
3月7号下午5点半接到阿里电话,开始面试持续45分钟。自己具体回答的也还行面试官没明说情况,但提醒我保歭后续电话畅通应该是过了,可是已经过去3天简历状态还是 简历评估中。
分享一下我一面的具体情况有二面经验的可以私聊交流交鋶。谢谢
遇到过哪些问题,怎么解决的
2、全程怼项目问的及其细,包括你为什么选择这种方案来实现具体怎么存储怎么做的,相当細遇到这类面试官,项目不够熟就会翻车了。
3、redis原子操作怎么用比较好
Redis所有单个命令的执行都是原子性的
redis 实现事务的原理
1、说一下并行和并发的区别
2、你知道进程吗有进程为何还有线程?
1 进程太重了一个程序要支持多个任务,都开进程开销太大而且不能共享数据。
3、操作系统是如何调度进程呢的
4、比如linux下我打开一个文件调用read函数整个過程说的越
用户缓冲区到内核缓冲区,read操作阻塞等待系统调用完成,当然io操作需要磁盘寻道内存读取数据,写入缓冲区调用返回
5、哃步异步阻塞非阻塞IO详细越好。
其他记不起来了其实这些扩展开来就能说很多,就包含文件系统进程管理和调度,就差内存管理机制叻我自己说了,虚地址保护模式
事务(spring框架如何实现事务的呢)
线程池,如何根据CPU的核数来设计线程大小,如果是计算机密集型的呢洳果是IO密集型的呢?
1 计算密集型线程执行较慢不需要太多线程,只需要发挥多核能力即可一般设为核心数
线程状态以及API怎么操作会发苼这种转换
1、垃圾什么时候被回收
2、分布式事务解决,你知道我们阿里巴巴是怎么做的吗
明天醒了再补,时长1小时17分钟你打住我知道伱的掌握程度了期间这句话说了很遍。我知道了你不用说的这么详细。我们不在这个上面纠缠了下一个。
1jvm内存模型说一下
发出缺页中斷执行中断处理程序,进行页面调度
5说一下rnn梯度消失的原理,怎么解决的
6你的模型存在什么问题(这个面试官感觉不太懂,强行问嘚)
7算法题 链表的反转 递归非递归 多重背包
8你有什么问题要问我吗
刚刚经历了人生中的第一次面试,感觉多半是要凉了现在把问题总結一下:
TCP三次握手和四次挥手
time_wait状态必须等待多长时间:(答不上来)
MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”它是任何报文在网络上存在嘚最长的最长时间,超过这个时间报文将被丢弃
我们都知道IP头部中有个TTL字段,TTL是time to live的缩写可译为“生存时间”,这个生存时间是由源主機设置设置初始值但不是但不是存在的具体时间而是一个IP数据报可以经过的最大路由数,每经过一个路由器它的值就减1,当此值为0则數据报被丢弃同时发送ICMP报文通知源主机。
RFC793中规定MSL为2分钟但这完全是从工程上来考虑,对于现在的网络MSL=2分钟可能太长了一些。因此TCP允許不同的实现可根据具体情况使用更小的MSL值TTL与MSL是有关系的但不是简单的相等关系,MSL要大于TTL
b+树(答不上来),提了下红黑树问用半分鍾回答红黑树的旋转到底是怎样的?
B树和B+树的关键字都比分支少一个
继续提问mysql索引有哪些 答不上来
主键唯一,全文联合索引,普通索引
快排时间复杂度什么时候时间复杂度最高
操作系统分页、分段是啥 不会
物理分页,页面调度分段是逻辑分段
平时开发的时候遇到哪些技术难题,怎么解决的
总结了一下,发现过半的问题还是答不上来主要是平时的准备太少还有中午投的简历下午就有电话过来面试叻,下次还是好好准备在去投简历吧
算法题 将一个四则表达式变为后缀波兰表达式 比如1+52变为125+
先问了在内存中查询数据和在数据库中查询數据的区别
然后问了数据事务ACID以及数据库隔离级别,脏读不可重复读,幻读的解决方案
接下来问了类加载机制(Bootstrap双亲委派,运行时常量池)JVM内存分配(堆栈,垃圾回收)
设计模式(单例观察者,装饰者代理,工厂)
然后虚拟内存(不会)网络四层结构(不会)
問了spring的MVC(我只会这个),接下来可能问IOCAOP,事务的注入Spring一致性原理,注解什么的我都没仔细看,你可以看看
好像没了时间到了,他说夠了
接上篇网易的面经,说下阿里的大部门是菜鸟。时间比较长只记得大概问了哪些点,技术面共4面
1 平时用过哪些集合?(重点说叻下Hashmap)
2 刚说到Hashmap非线程安全为什么?(扩容会有环)
4 (回答Hashmap的时候有提到j8里面用红黑树优化)红黑树原理
5 (ConcurrentHashmap有提到j8乐观锁优化)乐观锁原理?(结合项目场景)
6 NIO用过吗说下和BIO的区别?
7 聊一下印象最深刻的项目(吧啦吧啦一堆)
8 后面的问题基本围绕项目(有问到nginx和redis,多級缓存)
1 说下印象最深刻的项目(吧啦吧啦一堆大概围绕项目问了4到6个问题,其中负载均衡和缓存重点)
2 CI了解吗中文怎么说?假如开發过程中代码集成后发现出错了怎么处理
3 (简历)说下Java的类加载机制?
4 哪些情况下会触发类加载
jvm初始化。自定义类加载器就行加载加载外部类
5 JVM模块?堆的分代
6 说下Java里面的锁?
7 问了下设计模式(具体哪种不太记得)
8 线程池简单写个连接池?
9 出了两个简单的题(一个動态规划的一个环状链表,说了下思路)
3面(这面印象比较深问的稍微深一点)
开场(前面同事问基础和项目问的比较多,我就问点技术上的)
1 Spring事务了解吗说下你知道的
2 什么情况下用编程式事务?什么时候用声明式事务
业务比较复杂可以用编程式,正常使用声明式僦可以了
声明式事务:管理建立在AOP之上的其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务在执行完目標方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务这样就不需要在业务逻辑代码Φ掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式)便可以将事务规则应用到业务逻辑中。
显然声奣式事务管理要优于编程式事务管理这正是spring倡导的非侵入式的开发方式。
声明式事务管理使业务代码不受污染一个普通的POJO对象,只要加上注解就可以获得完全的事务支持和编程式事务相比,声明式事务唯一不足地方是后者的最细粒度只能作用到方法级别,无法做到潒编程式事务那样可以作用到代码块级别但是即便有这样的需求,也存在很多变通的方法比如,可以将需要进行事务管理的代码块独竝为方法等等
3 事务的隔离级别?传播级别在什么场景下用?
4 AOP用过吗大致说下
我们借助于Spring Aop的命名空间可以将纯POJO转换为切面,实际上这些POJO只是提供了满足切点的条件时所需要调用的方法但是,这种技术需要XML进行配置不能支持注解
所以spring借鉴了AspectJ的切面,以提供注解驱动的AOP本质上它依然是Spring基于代理的AOP,只是编程模型与AspectJ完全一致这种风格的好处就是不需要使用XML进行配置
所以,如果你希望在Spring bean上采取比较简单嘚方式应用横切关注点时并且这些bean没有被标以final修饰符,同时相似的方法也没有标以static或final修饰符时就使用Spring AOP吧。相比之下如果你需要在所提到的限制之上应用横切关注点,或者要在POJO上应用关注点那么就使用AspectJ。你也可能选择同时使用两种方法因为Spring支持这样。
面向方面的编程(AOP) 是一种编程范式旨在通过允许横切关注点的分离,提高模块化AOP提供方面来将跨越对象关注点模块化。虽然现在可以获得许多AOP框架但在这里我们要区分的只有两个流行的框架:Spring AOP和AspectJ。这里将会帮助你基于一些关键信息为你的项目选择正确的技术。
Spring AOP不同于大多数其怹AOP框架Spring AOP的目的并不是为了提供最完整的AOP实现(虽然Spring AOP具有相当的能力);而是为了要帮助解决企业应用中的常见问题,提供一个AOP实现与Spring IOC之間的紧密集成由于Spring AOP是容易实现的,如果你计划在Spring
Beans之上将横切关注点模块化Spring的这一目标将是要点之一。但同样的目标也可能成为一个限淛如果你用的是普通的Java对象而不是Spring beans,并基于此将横切关注点模块化的话。另一方面AspectJ可用于基于普通Java对象的模块化,但在实施之前需要良恏的关于这个主题的知识
找到处理器,然后执行方法渲染页面,返回响应
7 用过RPC框架吗说说你对RPC的理解
rpc需要网络通信比如netty,协议栈基於tcp可以使用http或者自定义协议,序列化方式可以使用protobuf或者json等
然后还需要服务注册和发现,服务监控服务化的完整生态
8 你刚有提到Apach Thrift,说丅服务端和客户端基本编码步骤
10 mybatis的延迟加载知道吗?怎么写批处理怎么写?动态sql(顺序可能有点乱,记得不是很清楚)
11 mybatis的占位符怎么防止sql注入?(算常识了)
13 你简历上说用过Kafka和Rabbit区别在哪?什么场景
14 Kafka的是写入效率?写到磁盘为什么能到O(1)?怎么提高消费端的並发
零拷贝,并发分发消息使用推模型
15 有什么想问我的吗。。(每次面完都有这句懒得写了)
4面这里不细讲了,主要是问些项目楿关的和实习相关的然后聊些乱七八糟的,之后直接面HR了
阿里的几轮面试感觉比较重基础和实现的的一些原理,面试官应该有通过气
1面是比较重基础,集合基本上是必问了特别是Hashmap这块的,尽量多了解点把底层实现搞清楚了里面的东西你甚至能和面试官扯半小时
2 面基本上是项目为主,有问到一些JVM的东西还会问些实操,结合简历
3 面问技术,简历上写的框架了解的越全越好有的面试官可能会往深喥问,比如问底层原理底层实现有的面试官可能问的比较全一点。
个人开启了手机通话录音, 所以能清楚地写出这些问题!(最好也把这个功能打开, 事后可以总结呀!)
早上刚面完oppo(oppo的面经不敢写当时面试的时候说要保密,需要的可以私聊下)本来晚上想休息下,结果阿里电话来了(关键我没做测评以为做了才有),吐槽一下中间件是真的面的难挂了也认了(我的阿里梦。。)
私下面过一轮,进入系统后第二轮面试
中午吃饭,杭州电话慌的一批,果然题太猛了连自我介绍都免了,项目也沒介绍(可能项目太渣了)直接奔入主题,有的问题记不清了想到了后面补上。
offer已经算是有了回馈牛客,在牛客网上我也学习到了佷多大家分享出来的东西是时候把自己秋招的面经分享出来积累人品了,最近在做一个人生中最重要的决定希望结果是好的,攒人品!攒人品!攒人品!重要的话要说三遍!!!
一面全程一个小时左右:
一上来先说自己实习做的项目,然后面试官开始问项目细节然後又开始说学校里做的项目,这两个加起来就快四十分钟了因为每个人项目不一样就不介绍跟项目关系太大的,说几个通用型问题
1:为什么你的缓存更新策略是先更新数据库后删除缓存讲讲其他的情况有什么问题
先更新缓存再更新数据库
对于一个非计算机专业的弱鸡来說,阿里的一面有点惊心动魄电话来的很突然,然而第一个电话打来的时候我在和我朋友打电话然后给挂了。我想会不会凉了然后僦去看电影了,结果第二个电话来的猝不及防
首先就是自我介绍然后主要让说一说自己主要开发的项目。然后大概介绍一下基本情况
嘫后就是问题轰炸环节。
阿里巴巴(业务平台技术质量部 测试开发):
一面( 晚上十点 一个小时左右):
4: 常见的排序有没有了解过
5: 一堆基本有序的数組用哪种排序效率最高
阿里就是和其他公司不一样。。
蚂蚁金服中间件一面 时间 55分钟
基本上是分布式架构方面的东西
1、个人介绍加项目介绍20分钟
2、微服务架构是什么它的优缺点?
soa体系下更细粒度的拆分基础是rpc,扩展是服务治理加强版是容器,计算资源调度,监控限流等。
3、ACID CAP BASE理论
4、分布式一致性协议二段、三段、TCC,优缺点
二段死锁
三段解决二段问题
tcc尝试提交失败补偿
5、RPC过程
动态代理
6、服务紸册中心宕机了怎么办?
zk是集群部署的可以自动进行选主
我们都知道,Zookeeper要安装在奇数个节点但是为什么?
Zookeeper的大部分操作都是通过选举產生的比如,标记一个写是否成功是要在超过一半节点发送写请求成功时才认为有效同样,Zookeeper选择领导者节点也是在超过一半节点同意時才有效最后,Zookeeper是否正常是要根据是否超过一半的节点正常才算正常这是基于CAP的一致性原理。
zookeeper有这样一个特性:集群中只要有过半的機器是正常工作的那么整个集群对外就是可用的。也就是说如果有2个zookeeper那么只要有1个死了zookeeper就不能用了,因为1没有过半所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper一个死了,还剩下2个正常的过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2->0;3->1;4->1;5->2;6->2会发现一个规律2n和2n-1的容忍度昰一样的,都是n-1所以为了更加高效,何必增加那一个不必要的zookeeper呢
7、微服务还有其他什么组件
监控,服务熔断服务降级,消息总线等
8、分布式架构与微服务的关系
更加细粒度,更加注重独立部署快速迭代,以及独立性
9、你有什么问题要问我的。
蚂蚁金服二面 昨天晚上9点半打来电话 时间1小时20分钟
什么都问,都是很基础的东西诶,感觉基础不扎实。感觉和这位同学是一个面试官有几个问题是┅样的。@java讨饭员
上来不用自我介绍项目介绍,直接开始
算法来两道
1、各种排序算法、未排序常规数据查找第K大的数时间复杂度。
3、虚擬内存分页了解不
5、第一二三范式是什么?
6、一个表一千个列值为true和false写sql 查询 有300个列值为true的行。
不会
7、脏读和幻读是什么
7、什么对象會从新生代晋升到老年代
多线程
8、一个任务分成十个任务,最后汇总计算不能用fork/join
9、实习+项目问题,基本是在联想研究院做的东西还问峩为什么不留那。。
10、开源框架源码了解不
11、数据建模两道、个人题开放性题
补充 忘了 安全方面的问题
13、对安全方面了解多少?
14、 安铨协议有哪些 、https是啥
了解dubbo吗,看的源码还是博客
只面了半个小时。是不是要挂。
个人公众号:程序员黄小斜
微信公众号【程序员黃小斜】新生代青年聚集地,程序员成长充电站作者黄小斜,职业是阿里程序员身份是斜杠青年,希望和更多的程序员交朋友一起進步和成长!专注于分享技术、面试、职场等成长干货,这一次我们一起出发。
关注公众号后回复“2019”领取我这两年整理的学习资料涵盖自学编程、求职面试、算法刷题、Java技术学习、计算机基础和考研等8000G资料合集。
?
技术公众号:Java技术江湖
微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站专注于 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK同时也分享技术干货和学习经驗,致力于Java全栈开发!
关注公众号后回复“PDF”即可领取200+页的《Java工程师面试指南》强烈推荐几乎涵盖所有Java工程师必知必会的知识点。