校招实习面试实战,顺丰科技Java工程师面试复盘总结
备战春招,校招实习面经分享,拿Java开发工程师offer~~
本系列文章包括Java、算法、计算机网络、数据库、操作系统等等,本篇介绍面试顺丰科技【Java工程师】岗位的题目,复盘解析及心路历程。
传送门:
- 【亲身面经分享,校招实习面试系列】每日10题,快速学习(Java基础篇)
- 【校招实习面试系列,每日10题,快速学习】Java高级篇
- 【校招实习面试系列】你知道网络中4类IO模型是什么吗?我的朋友如此优秀回答
- 【校招实习面试实战,身临其境】华为软件开发工程师面试复盘总结
顺丰科技的校招实习面试,一般都是直接通过邮件通知具体的面试时间和具体操作的,邮件也是比较详细,因为没有提前约时间这一操作,所以收到邮件后就要安排自己的时间。
我当时是在赛码网上面试,系统还是比较简洁,提前登录上去等面试官呼叫就行。
自我介绍
老熟悉了,这个环节。基本上每次面试的开门红就是自我介绍了,讲的好就是开门红(0 - 0)哈哈哈
别小看开头的自我介绍,逻辑思路表达清晰很重要,都说“万事开头难”,如果开头做得好,后续回答过程会轻松许多。因为从自己的说出来的感受,加上面试官的反应,可以增强自己的信心。
1、讲一下Java里面常用的数据结构?
ArrayList、LinkedList的底层和区别,HashMap底层数据结构。
ArrayList:基于数组这种数据结构实现,而且这个数组是动态的,可以自动扩容,数组的结构是随机访问的,也就是可以通过下标获取,时间复杂度O(1)。
LinkedList:基于链表的结构实现的,都知道链表对于插入删除的操作效率高,直接修改结点指针指向即可,但是对于获取数据,需要通过遍历得到,时间复杂度O(n)。
HashMap:这个数据结构再熟悉不过了,在面试中都被讲过无数遍。网上资料无数,详细可见:https://blog.csdn.net/lkforce/article/details/89521318
遇到这个问题,算是比较友好的面试官了,可以让你讲出自己熟悉的内容,而我们这时也需要将功夫全部展现出来,回答当然要适可而止,避免给自己挖了个坑
。
2、讲讲B+树索引,为什么B+树的高度一般不高?
B+树索引是MySQL中最常见的,InnoDB存储引擎的一种索引,它按照顺序存储数据,在MySQL中可以用作order by和group by的操作实现。
B+ Tree中,非叶子结点的结构包括:
- 本结点所含关键字的个数。
- 指向父节点的指针。
- 关键字。
- 指向子结点的指针。
所有叶子节点(存放数据)之间是一种链式环结构。
- 非叶子节点只存储键值信息。
- 所有叶子节点之间都有一个链指针。
- 数据记录都存放在叶子节点中。
B+树存储数据的结构如图:
到这里,回答了问题中的第一问。
那为什么B+树的高度一般不高?
答:因为…树高度3到4层存储的数据量就很大了,达到千万级别!
数据量具体计算方法看这篇,非常详细!https://zhuanlan.zhihu.com/p/86137284
另外,MySQL数据库还有其他几种索引:哈希索引、覆盖索引、聚簇索引,以前我写过一篇更详细全面的,欢迎查看:《今天我们来聊聊MySQL索引,详细!》
3、多线程了解吗?假如一个场景:最小核心线程数10,最大线程数15,有界阻塞队列为100,现在请求110个,再请求一个怎么处理?
Java线程池的7个主要参数
:
corePoolSize:池核心线程大小
maximunPoolSize: 线程池最大线程数量
keepAliveTime: 空闲线程存活时间
unit:空闲线程存活时间的单位
workQueue: 工作队列(4种)
(1)ArrayBlockingQueue:基于数组的有界阻塞队列,FIFO
(2)LinkedBlockingQueue:基于链表的无界阻塞队列(最大容量Integer.MAX_VALUE)FIFO
(3)SynchronousQueue:不缓存任务的阻塞队列
(4)PriorityBlockingQueue:基于优先级无界阻塞队列threadFactory: 线程工厂
handler: 拒绝策略
策略1:ThreadPoolExecutor.AbortPolicy(默认,拒绝执行任务)
策略2:ThreadPoolExecutor.CallerRunsPolicy(运行被拒绝的任务,若执行程序已关闭,则会丢弃该任务)
策略3:ThreadPoolExecutor.DiscardOldestPolicy(丢弃等待队列中的队头任务)
策略4:ThreadPoolExecutor.DiscardPolicy(通过源码可以看出,该策略不会执行任务操作)
然后Java通过Executors提供以下4种线程池。
- newSingleThreadExecutor
- newFixedThreadPool
- newScheduledThreadPool
- newCachedThreadPool
之前我也写过专门讲Java线程池的,这里不在赘述,有兴趣继续探索的伙伴可以看看:《Java面试:Java线程池七大参数详解》、《每日10题,快速学习(Java基础篇)》
或许到这里,你已经知道这个问题的答案了:假如一个场景:最小核心线程数10,最大线程数15,有界阻塞队列为100,现在请求110个,再请求一个怎么处理?
首先,10(corePoolSize)+100(workQueue)=110,意思就是这100个请求任务可以有10个任务给10个线程处理,另外100个任务暂时存在工作队列中等待。
那么,这时再请求一个任务,且其他任务还没有处理完成的,达到111个。因此,再看maximunPoolSize=15,还有空间可以再创建一个线程,因为111<115。
这里需要知道的是,核心线程数是指Java线程池中会长期保持corePoolSize个线程,最大线程数是指任务数量超过核心数+队列大小,同时不超过最大线程数+队列大小,就可以再场景1个线程处理该任务
。
如果请求的任务远远超过最大线程数和工作队列的总和,上面的4中拒绝策略就派上用场了,默认是ThreadPoolExecutor.AbortPolicy,拒绝执行该任务。
有两篇文章写的不错,可以进一步感受:https://zhuanlan.zhihu.com/p/112527671、https://jishuin.proginn.com/p/763bfbd675a8
4、TCP是如何实现可靠传输的?
TCP可以说是计算机网络中最常考的协议,是五层协议模型中运输层的关键。
要知道TCP是如何实现可靠传输的,就需要深入理解它的工作原理。
滑动窗口、报文确认机制、超时重传、快速重传、流量控制、拥塞控制,这一系列TCP协议中的功能机制,都是保证TCP可靠传输的后盾。
耳熟能详的三次握手、四次挥手,也是TCP协议在服务器和客户端之间实现数据安全传输的工作机制。
因为之前我写过计算机网络系列的博文,从五层协议体系结构底层往上,详细记录了各层协议的工作原理和特点,这个问题可以分析出一篇长文:《必须掌握的TCP全家桶系列详细解读:流量控制、三次握手、四次挥手及拥塞控制算法》
5、有什么想问我的吗,随便问什么都可以?
面试官问到这里,表示着这场面试即将结束,如何展现自己的能力和兴趣,就看自己了。
通常面试到达反问环节,问题主动权就在面试者手中,我个人觉得,对于技术栈的询问可以简单提出,主要从获取面试官那里获得一些有价值的东西,同时也表现出你的感兴趣和勤学好问
。
比如,问一下做的业务是什么呀、涉及什么技术栈…
今天面试就到这里,静候通知~~
欢迎“一键三连”
哦,点赞加关注,收藏不迷路!
每天进步亿点点,距离Java工程师更近一步啦,我们下篇见!(⊙ᗜ⊙)
公众号同步更新哦,习惯阅读公众号的伙伴们可以关注下面我的公众号呀!
本篇内容首发我的CSDN博客:https://csdn-czh.blog.csdn.net/article/details/123523982
校招实习面试实战,顺丰科技Java工程师面试复盘总结相关推荐
- java初级工程师面试需要什么_初级Java工程师面试指导
一.概要 初级JavaWeb工程师的面试准备 Java基础知识面试指导 Java面向对象面试指导 JSP面试指导 MySQL数据库基础面试指导 Servlet面试指导 二.初级JavaWeb工程师的面 ...
- 顺丰科技高级java面试_顺丰科技-Java笔试编程题-均ac
import java.util.*; public class Main { private static int n; //人数 private static int m; //语言数 p ...
- 美团科技 Java工程师_美团网java工程师面试都会问哪些问题?
美团网java工程师面试主要考察面试者的专业知识,涉及TCP/IP 线程.synHashMap底层.进程关系.servlet生命周期.pringMVC单例异常.Object方法.ConcurrentH ...
- JAVA工程师面试题目大全_绝对值得看
JAVA工程师面试题目大全 一.单选题 1.下列哪种说法是正确的( D) A)实例方法可直接调用超类的实例方法 B)实例方法可直接调用超类的类方法 C)实例方法可直接调用其他类的实例方法 D)实例方法 ...
- 技术直播:1小时突击Java工程师面试核心(限免报名)
后疫情时代,连程序员这个多金的职业也遭受到了一定程度的打击.从各大招聘网站和多次面试经历中,相信大家已经意识到,面试官对程序员技能体系和项目经验考核似乎更严苛了.你在面试中常常为什么苦恼呢?简历撰写? ...
- Java工程师面试突击第一季
<Java工程师面试突击第一季>有哪些相关技术点 视频 01_先来看一个互联网java工程师的招聘JD 视频 02_互联网Java工程师面试突击训练课程第一季的内容说明 视频 03_关于互 ...
- java工程师面试如何自我介绍
首先进行自我介绍,如姓名.籍贯.学历,毕业院校: 接下来介绍工作情况,如:在哪工作过多久:工作内容是什么: 之后介绍下专业技能,挑选强项说明(切勿刚接触,之后乱说,否则面试者一问,马上穿帮). 备注: ...
- java工程师面试经验分享1-面试准备
目录 前言 原因分析 面试准备: 1.复习 2.面试题&笔试题 3.简历 4.平台 1.很多朋友说我投了简历但就是一直没有面试通知. 2.很多人会问:我挑公司也需要时间,哪有时间投这么多家呢? ...
- java工程师面试注意事项(一套太极剑法传授给你)
1.面试时,为什么没必要紧张? 第一.从心态上你要把这次面试看做一次练习,成败都可.毕竟,说实话,面试成功是小概率事件,按照一个人面试十家公司成功一家来看,每家成功的概率只有10%.所以,完全没有必要 ...
最新文章
- 阿里员工绩效只拿3.25!自我反省:平时假装努力!晚上没加班!去厕所时间太长!还老买彩票!...
- 为 MySQL/MariaDB 开启 Binlog 功能
- Linux yum 命令
- 剑指offer之31-35题解
- 不会吸引人的JavaDocs源样本
- Luogu P2055 [ZJOI2009]假期的宿舍
- Asp.net页面之间传递参数的几种方法
- 如何玩转 HTTP 3?
- springboot 妙启动_SpringBoot启动时执行指定任务
- ROS 5.12 上自动更新3322.org动态域名
- HTTP协议详细介绍~超详细
- fiddler https
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_2_函数式接口的使用...
- [JNI] 开发前言
- IntelliJ IDEA设置字体样式
- 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
- java基础-类-抽象类-接口(自学笔记)
- Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
- IDEA安装插件提示was not installed: Cannot download解决办法
- 【NI Multisim 14.0操作实例——最小系统电路】
热门文章
- 计算机概论 第一次作业,2015计算机概论模拟试题+作业题目大全.doc
- 如何将全民K歌的歌曲转成mp3格式
- kvm虚拟化介绍及部署
- PHP 获取用户客户端IP的解决方案
- java数据类型入门程序_「JAVA零基础入门系列」Day3 Java基本数据类型
- 护眼台灯中的南卡护眼灯和明基哪个牌子好?两款护眼灯的真实体验测评
- 植物大战僵尸(4):寻找向日葵的生产速度
- 休斯顿火箭前日已试训莫-哈克利斯,德雷蒙德-格林,约瑟夫等球员
- docker 报错:bridge docker0 failed: exchange full
- 春节被拷问事业薪资如何应对?