本人大概情况
211本,海外硕。软件工程专业。手头基本没项目。过简历关全凭运气。
深信服第一轮
刚睡醒就接到电话,面试40分钟左右。
- 在项目和技术上介绍自己
- 了解Spring Boot吗? 答:不。。。
- Spring中为什么通过一个注释就有相应的功能?答了一个猜想,猜错了所以后续问题就不问框架相关了。。。
- 平常使用过哪些集合类?答:List,Set,Map。多了一句嘴:平常Set用的其实很少。
- 那HashSet你了解底层吗?(就因为多嘴。。。还好勉强答了上来)
- 那HashMap呢?
- 刚刚提到了红黑树,红黑树一次查询的时间复杂度?
- 讲到了树那就讲讲二叉树,二叉树的一次遍历有没有不通过递归的方式?答:使用栈。
- 追问:那有没有不使用额外的空间的方式呢?答:不知道了。。。
- 了解JVM类加载吗?答跑题了,大讲特讲类加载器。。。
- 追问:类加载的过程(什么时候赋初值,什么时候初始化)?
- GC(算法,收集器)
- 并行与并发的区别?
- 是否可以这样理解:并行就是多个线程竞争多个CPU资源而并发就是多个线程竞争一个CPU资源?(我觉得可以这么理解。)
- Java有什么方式保证线程安全?
- Spring MVC中的单例Bean是线程安全的吗?答:不是。多个线程持有同一个对象,产生竞争
- 那Spring MVC中的原型Bean呢?答:是,多个线程持有的是不同的对象。
- 你确定吗?会不会出现某些方法更改这个类的属性从而产生竞争?(我听到这就犹豫了)想了想,答:确实有可能,如果这个bean有个类变量的话。
- MySQL优化查询?
- 什么是索引?
- 你有什么问题?
评价:面试体验极佳,面试官在卡壳的时候会适当引导。可惜二面已凉。
华为见习生第一轮
面试总共1小时20分钟左右
自我介绍
针对简历上的经历详细询问,负责哪些职责,用到哪些框架,这方面怎么设计并且为什么这样设计等问题(可能占了40分钟)
你觉得你与其他人相比,优势是什么
介绍下JVM G1回收器
什么时候可以开始实习
出国觉得不虚此行的地方在哪
为什么选择回国发展
不知道你对这样的一个业务有没有兴趣(开始介绍部门的业务)
手撕代码:
字符串反转:给定一个含有字母和数字的字符串,实现以下规则的反转:
- 字母反转,数字不反转;
- 整体的字符串反转
例子 : 输入 输出
a12b34de ed34b12a
a23b34c c34b23a
当场给出的解是O(n)的时间和空间复杂度。追问觉得哪里还可以优化吗?答:可能空间可以用常数空间和增加特殊情况的处理。
反问
评价:面试体验佳。祈祷能过。
深信服第二轮面试
面试总共20分钟不到。
- 自我介绍
- Java运行时数据区
- 字符串常量放在哪个区
- MySQL InnoDB 索引的发展历史,为什么使用B+树
- B+树和哈希作为索引的优劣?
- MySQL一条查询语句的执行步骤
- Spring IOC容器的理解
- 怎样做到自动装配的
- Spring Boot的自动装配原理
- Spring AOP原理的理解
- 有用到过AOP吗
- 反问。
评价:面试官背景略有杂音。明显凉了,而且相当快被斩了。
阿里云提前批一面
面试从七点半到十点,两个半小时。面的太久,还有很多听不懂的题目,所以面经不完整。
自我介绍
类加载器和类加载机制
类加载器除了加载类还有什么作用
Spring框架系列问题。实在面的太久,而且本人Spring和Spring MVC真是只会用最基本的东西,可以算一道题都没答出来。可是面试官说是很基础的题,大家可以大致想象一下吧。但是问的问题相当注重实践,很多先是问区别,然后问完区别后问哪些场景会用到。
MyBatis系列问题。都不会。大家可以自己想象下实践中会用到啥吧,这些东西会被问。
Http系列问题
- 讲下redirect和forward吧
- 你提到了301和302,解释下
- 解释得不够底层,能不能具体讲讲浏览器收到301和302的响应会怎么做?(三道题秒杀了我所有网络知识,再见)
面试官至此评价:你简历上写的东西感觉你都不是很熟悉,不如你讲讲你会什么吧?(不会啊!我什么都不会!)
- MySQL系列问题
- 索引底层和实践
- explain关注哪些东西
- JVM系列
- 线上服务发生OOM宕机,如何排查
- 你说要先dump出日志来,你有没有想过可能dump出来几个G,就算从服务器上拉下来了本地也没办法解析,如果是这样你怎么解决?
- 能不能说两个你学JVM后对你编程实践上最有帮助的两个例子?(这个问题一出我就知道凉了)
面试官开始给建议准备结束面试了。经过我的积极争取还是问了点Java基础知识。
- 详细讲讲volatile关键字
- GC
手撕代码:
- 并发顺序打印
- 数组的均值分割
反问
评价:面试时间相当久,但是面试官人很好,给了我很多学习和技术发展上的意见和建议,只是会问很多我一个字都答不上来的问题。还要补充的就是可以明显感觉到问的问题相当注重实践,背书题基本没有。面试是肯定凉了,就不祈祷我自己了,希望大家都能顺利过吧。
字节电商暑期实习一面
面试时间卡得很准,说一小时就一小时。
- 自我介绍
- 大致询问了简历上项目的细节
- 类加载器和双亲委派
- HashMap的线程不安全体现在哪里
- ConcurrentHashMap如何保证线程安全的
- AQS
- MySQL索引的底层数据结构
- MySQL的死锁
- MySQL查询计划
- MySQL的默认隔离级别
- LeetCode79 单词搜索
评价:面试官相当友好,着重考察基础知识,卡壳时会引导提示。祈祷能过。
华为见习生第二轮
完成性格测评之后约面试。
主管面,搜了搜之前的面经发现好像有点玄学,甚至特别紧张。
- 自我介绍
- 详细介绍简历上项目,讲述业务,在项目中担任的职责
- 遇到过的问题已经如何解决
- 反问
评价:面试官想当和蔼可亲,就是家常聊天的感觉(有一种和长辈介绍自己干什么工作的错觉)。没有之前面经中的手撕代码和智力题。祈祷能过。
字节电商二面
- 自我介绍
- 介绍完就开始做hard题.... LeetCode 72. 编辑距离
- JVM运行时数据区,哪些是线程私有,哪些公有
- 如何自然地终止一个Java线程
- HTTP状态码 讲讲5XX
- HTTP头部有什么
- 数据传输肯定是分包的,那么在HTTP保持长连接的状态下,收到一个包,如何判断这个包属于哪个请求或者哪个响应?这道题当时纠结于HTTP这一层会怎么做所以没答出来。但是面试结束一想就是分包这个过程就是TCP负责的事情,面试官的意思应该就是想讲到TCP如何将不同的包区分开来的。
- MySQL索引何时会失效
- 反问
面试官和蔼可亲,问问题也是围绕简历上展开,没有特别深入。可惜面试发挥相当不好,祈祷能过。
p.s. 面试官好像坐在茶水间附近,所以背景杂音有一点多。
阿里CBU一面
四十分钟左右。
- 自我介绍
- 详细询问简历上的项目,发现乏善可陈,点评一句实践经验不太丰富
- 反问
评价:主要就是问简历上项目的细节,再随着回答追问一些基础知识,不太有共性。面试官热情又幽默。
字节电商实习三面
字节面试时间卡的都太准了,说一个小时就一个小时
自我介绍
进程与线程的区别
什么是原子性
操作系统中维护原子性的同步机制
谈谈你对操作系统中内存管理的理解,尽可能详细(这题一出冷汗就冒出来了)
谈谈操作系统中静态链接与动态链接的区别?(不会。。。强行凭借Java中链接的知识胡扯了几分钟)
TCP四次挥手,细节一点,什么时候TIME-WAIT阶段,什么时候CLOSE-WAIT阶段
TCP拥塞控制
输入URL后发生的事情
说说对IPv6的理解,尽可能详细
笔试题两道
一个环上有10个点,编号为0-9,
从0点出发,每步可以顺时针到下一个点,也可以逆时针到上一个点,
求:经过n步又回到0点有多少种不同的走法?
举例:
如果n = 1,则从0出发只能到1或者9,不可能回到0,共0种走法
如果n = 2,则从0出发有4条路径:0->1->2, 0->1->0, 0->9->8, 0->9->0,其中有两条回到了0点,故一共有2种走法。
之前没做过,现场想思路,经过面试官提醒采用DP,最后磕磕绊绊写出来了
LeetCode 31. 下一个排列
对Java AQS的理解,尽可能详细
对Java Synchronized关键字的理解,尽可能详细
反问
评价:还好没有之前面经上看的智力题,主要还是计算机基础知识和代码能力。面试官人很好,看你答得流利就深挖再问,答得磕磕绊绊的就换方向问了。祈祷能过🙏
阿里淘系技术部提前批一面
时间40分钟左右。
- 深挖MySQL
- 了解的不同的MySQL的引擎,具体差别,如何选择以及应用场景
- 提到了事务,聊聊事务
- 还提到了索引,聊聊索引(比较不同引擎的索引的区别)
- Linux一些简单的指令
- 怎么找到正在运行的Java进程
- 性能问题严重,可以通过什么指令查看
- Java GC
- 聊聊不同的垃圾回收器
- 你刚刚了的这些垃圾回收器一些启动参数需要设置,怎么考虑
- 有具体地看过垃圾回收器的GC日志吗(🈚️)
- 面试官点评:缺乏实践,建议多加实践。
评价:每一个阿里的面试官最后都会给我一个缺乏实践的评价,摊手无奈。
在经过了面了阿里五六场之后一点小小的对阿里面试的印象和经验:如果简历上有一些东西不能保证经得住直达灵魂深处的提问,就千万不要往上面写。目前阶段的面试官都相当注重实践,基本都是一小段背书引出实践上操作相关的问题。在回答后不是又回到原理就是继续追问实践上的细节。总之就是一波接一波,直到本人水平极限。面试的时候心理压力相比于其他公司会大很多,但是面试官都会很真诚地提出对面试的建议和提升的建议。总的来说就是过程不轻松,不过是因为会发现很多很实际的问题,因此收获也不少。
阿里CBU提前批二面
面试时间较短,三十分钟左右。
- 你项目中碰到的问题是如何定位?如何提出方案以及最终如何落地解决的?
- 除了这个问题你对这个业务还有没有其他思考?
- 你提到了冷热数据处理,我这里可以提供给你两个解决方案,你说说你对这两个解决方案实现的思考?(第一个比较简单,另一个面试官提示空间换时间,但还是没想出来,最后给出答案只能赞叹一句学到了)
- 聊聊你对Java后端一系列技术栈的理解
- 你提到了Spring,Spring哪一块你比较熟?
- Spring的源码读过一点吧,你对其中一些设计模式的巧妙应用有没有比较深刻的印象?(讲了个Spring整合MyBatis用到的单例简单工厂,复盘感觉讲一讲AOP的代理模式比较好)
- 那你了解代理么,指网络上的代理
- 那Java中的静态代理和动态代理呢?
- 你在国外用过一些网购软件吧,可以讲下你觉得淘宝与这些软件相比哪些地方做得好或者可以提升?
- 你对职业规划有没有个什么打算?
- 反问
评价:这是第一次阿里面试官没给缺乏实践的评价。但是可以很明显地感觉在考察所谓的业务的sense,可惜这方面思考不是很足。接下来再好好沉淀,在学习中多加思考而不是简单地解决眼前问题吧。祈祷能过吧🙏
腾讯暑期实习一面
面试时间一小时左右。
自我介绍
详问项目
聊聊Java GC(算法,回收器以及不同JDK版本GC上的不同)
谈谈计网经典的面试题吧,尽量详细
写个归并
你刚刚写的申请了新数组,再写一个不用new新数组的版本
智力题:甲乙两人轮流往一个圆桌面上放同样大小的硬币。规则是:每人每次只能放一枚,硬币不许重叠,谁放完最后一枚硬币而使对方再也无处可放,谁就获胜。请问会不会有人必赢?是先手会赢还是后手会赢?赢的策略是怎样的?
读完题就知道肯先手赢,因为根据多年的选择题经验,可以假设桌子就只有一枚硬币那么大,所以先手的必赢了。然后老老实实想了会儿一般情况,想不出。老老实实和面试官说如果这道题是选择题我能拿满分,面试官开心地笑了。反问
评价:面试官长得有文质彬彬,儒雅可亲。面试整体不是很难,主要还是考察项目细节。最值得赞叹的一点是面试官的效率!因为我还在总结面经的时候,刷新了一下页面就发现初试已经通过了。祈祷下次面试顺利🙏
腾讯暑期实习二面
面试时间一个多小时,就写了三道题。感觉自己代码能力太弱了。。。
给一个数组,输出所有连续递增子数组的起点与终点,如果这个子数组只有一个元素,那么只输出一次。
比如:输入[0, 1, 2, 3, -1, -2, -3, 5, 6, 7]对应的输出为
0->3
-1
-2
-3
5->7提供了一个递归的快排,改写成非递归形式
三桶量水。三个桶分别为8L,5L和3L,初始状态8L桶是满的,要求最少的倒水次数量出4L,并输出经过的各个桶的状态。
评价:体验很好,就是自己菜。面试官提示的就差共享屏幕一行行写给我看了。祈祷能过🙏
携程实习一面
面试半小时,主要考基础知识。
- 自我介绍
- Java基础
- synchronzied锁升级的过程
- ReentrantLock与synchronized关键字的区别,以及不同应用场景
- JVM内存模型
- GC:CMS,G1
- Redis
- 跳表
- 为什么性能这么好?
- 扩容原理
- 三握四挥
- 手撕代码:LeetCode 189. 旋转数组
- 反问
评价:面试官和蔼可亲。会给出特别中肯且中和的学习建议。祈祷能过🙏
携程实习二面
面试四十分钟,主要深挖技术。
- 自我介绍
- 详问项目
- 数据库分库分表
- 三握四挥
- Spring
- Bean的生命周期
- AOP的实现原理
- 事务的原理以及注意事项
- Redis
- 本地缓存和分布式缓存的差别
- 缓存击穿、雪崩、穿透
- 数据库写写不一致的解决方案
- JVM发生OOM如何分析和解决
- 双核的设备如何设计线程池中各个参数充分发挥性能
- 你是如何学习一门技术的?
- 两到三年的职业规划?
- 你自己现在处于一个什么阶段?对自己的评价?
- 反问
评价:属于考察深度的面试,难度有点大。而且技术面面着面着就问hr面的问题了,有点懵。祈祷能过🙏
阿里CBU笔试加试
因为之前笔试0分,被捞起来加试一轮笔试做两道题。。。
-
感觉之前做过,模模糊糊觉得用贪心就好了。结果一开始就跑偏了。还好在写完贪心后立刻发现应该使用DP。
DP的状态就想了半天应该怎么选,之后明白了可以这样表示:dp[i][j]表示在nums数组左边选i个和右边选j个做乘法得到的最大分。
状态定义好了状态转移方程就相对来说好推出来了。
dp[i][j] = Math.max(dp[i - 1][j] + nums[i - 1] * multipliers[i + j - 1], dp[i][j - 1] + nums[n - j] * multipliers[i + j - 1])
,即在从nums数组左侧取一个做乘法和从右侧取一个元素做乘法更大的那个。最后答案就是从一共做了m个乘法中的值中挑出最大的那个。 有一个N*M大小的迷宫矩阵,迷宫的每一个格子有一个数值(a[i][j] <10^9)。
小明在迷宫中只能朝着上下左右四个方向的相邻格子前进,并且只能进入比当前位置数值更小的格子。
但是小明有个技能,他可以通过使用技能,强行进入到不满足数值大小要求的相邻格子,可惜这个技能只能使用K次。
请问小明从这个迷宫任选一个格子出发,最多能走多少步(开始位置计入步数,即站在起点是步数为1)。这道题平时我应该很难短时间内做出来,但是在第一题的启发下很快想到了要使用DP记录状态并且迷宫这种类型的题很容易想到DFS。定义一个三维的DP状态:dp[i][j][k]表示从i,j这个格子有k个技能能走得最远的距离。
定义好这个状态就只知道对于每一个位置进行DFS,上下左右四个方向,然后在需要使用技能(目标格子内的值大于目前格子的值)并且可以使用技能 (k>0)时使用技能,然后再以更大值更新当前格子。
阿里CBU三面
面试时间二十分钟,摊手耸肩摇头。
- 自我介绍
- 项目里有对MySQL查询的优化,详细讲讲?
- 分库分表有什么具体的做法?
- 如何解决查询老数据的联表?
- 聊聊对IoC,AOP的理解?
- 除了在框架里还有哪里用到了AOP?
- Spring MVC处理一个请求的过程?
- 是如何根据一个请求找到对应的控制器?
- 当时怎么考虑出国的?
- 还面了哪些公司?进展如何?
- 反问
评价:从面试开始因为一些原因就知道这次面试不太能过。而且挺长时间没面试了,面试的状态也不是很好。面试官评价学习不够深入,不过说实话过程有点无奈。
全部评论
(5) 回帖