备战春招,校招实习面经分享,拿Java开发工程师offer~~

本系列文章包括Java、算法、计算机网络、数据库、操作系统等等,本篇介绍面试顺丰科技【Java工程师】岗位的题目,复盘解析及心路历程。

传送门:

  1. 【亲身面经分享,校招实习面试系列】每日10题,快速学习(Java基础篇)
  2. 【校招实习面试系列,每日10题,快速学习】Java高级篇
  3. 【校招实习面试系列】你知道网络中4类IO模型是什么吗?我的朋友如此优秀回答
  4. 【校招实习面试实战,身临其境】华为软件开发工程师面试复盘总结

顺丰科技的校招实习面试,一般都是直接通过邮件通知具体的面试时间和具体操作的,邮件也是比较详细,因为没有提前约时间这一操作,所以收到邮件后就要安排自己的时间。

我当时是在赛码网上面试,系统还是比较简洁,提前登录上去等面试官呼叫就行。

自我介绍

老熟悉了,这个环节。基本上每次面试的开门红就是自我介绍了,讲的好就是开门红(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个主要参数

  1. corePoolSize:池核心线程大小

  2. maximunPoolSize: 线程池最大线程数量

  3. keepAliveTime: 空闲线程存活时间

  4. unit:空闲线程存活时间的单位

  5. workQueue: 工作队列(4种)

    (1)ArrayBlockingQueue:基于数组有界阻塞队列,FIFO
    (2)LinkedBlockingQueue:基于链表无界阻塞队列(最大容量Integer.MAX_VALUE)FIFO
    (3)SynchronousQueue:不缓存任务的阻塞队列
    (4)PriorityBlockingQueue:基于优先级无界阻塞队列

  6. threadFactory: 线程工厂

  7. handler: 拒绝策略

    策略1:ThreadPoolExecutor.AbortPolicy(默认,拒绝执行任务)

    策略2:ThreadPoolExecutor.CallerRunsPolicy(运行被拒绝的任务,若执行程序已关闭,则会丢弃该任务)

    策略3:ThreadPoolExecutor.DiscardOldestPolicy(丢弃等待队列中的队头任务)

    策略4:ThreadPoolExecutor.DiscardPolicy(通过源码可以看出,该策略不会执行任务操作)

然后Java通过Executors提供以下4种线程池。

  1. newSingleThreadExecutor
  2. newFixedThreadPool
  3. newScheduledThreadPool
  4. 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工程师面试复盘总结相关推荐

  1. java初级工程师面试需要什么_初级Java工程师面试指导

    一.概要 初级JavaWeb工程师的面试准备 Java基础知识面试指导 Java面向对象面试指导 JSP面试指导 MySQL数据库基础面试指导 Servlet面试指导 二.初级JavaWeb工程师的面 ...

  2. 顺丰科技高级java面试_顺丰科技-Java笔试编程题-均ac

    import java.util.*; public class Main { private static int n;   //人数 private static int m;   //语言数 p ...

  3. 美团科技 Java工程师_美团网java工程师面试都会问哪些问题?

    美团网java工程师面试主要考察面试者的专业知识,涉及TCP/IP 线程.synHashMap底层.进程关系.servlet生命周期.pringMVC单例异常.Object方法.ConcurrentH ...

  4. JAVA工程师面试题目大全_绝对值得看

    JAVA工程师面试题目大全 一.单选题 1.下列哪种说法是正确的( D) A)实例方法可直接调用超类的实例方法 B)实例方法可直接调用超类的类方法 C)实例方法可直接调用其他类的实例方法 D)实例方法 ...

  5. 技术直播:1小时突击Java工程师面试核心(限免报名)

    后疫情时代,连程序员这个多金的职业也遭受到了一定程度的打击.从各大招聘网站和多次面试经历中,相信大家已经意识到,面试官对程序员技能体系和项目经验考核似乎更严苛了.你在面试中常常为什么苦恼呢?简历撰写? ...

  6. Java工程师面试突击第一季

    <Java工程师面试突击第一季>有哪些相关技术点 视频 01_先来看一个互联网java工程师的招聘JD 视频 02_互联网Java工程师面试突击训练课程第一季的内容说明 视频 03_关于互 ...

  7. java工程师面试如何自我介绍

    首先进行自我介绍,如姓名.籍贯.学历,毕业院校: 接下来介绍工作情况,如:在哪工作过多久:工作内容是什么: 之后介绍下专业技能,挑选强项说明(切勿刚接触,之后乱说,否则面试者一问,马上穿帮). 备注: ...

  8. java工程师面试经验分享1-面试准备

    目录 前言 原因分析 面试准备: 1.复习 2.面试题&笔试题 3.简历 4.平台 1.很多朋友说我投了简历但就是一直没有面试通知. 2.很多人会问:我挑公司也需要时间,哪有时间投这么多家呢? ...

  9. java工程师面试注意事项(一套太极剑法传授给你)

    1.面试时,为什么没必要紧张? 第一.从心态上你要把这次面试看做一次练习,成败都可.毕竟,说实话,面试成功是小概率事件,按照一个人面试十家公司成功一家来看,每家成功的概率只有10%.所以,完全没有必要 ...

最新文章

  1. 阿里员工绩效只拿3.25!自我反省:平时假装努力!晚上没加班!去厕所时间太长!还老买彩票!...
  2. 为 MySQL/MariaDB 开启 Binlog 功能
  3. Linux yum 命令
  4. 剑指offer之31-35题解
  5. 不会吸引人的JavaDocs源样本
  6. Luogu P2055 [ZJOI2009]假期的宿舍
  7. Asp.net页面之间传递参数的几种方法
  8. 如何玩转 HTTP 3?
  9. springboot 妙启动_SpringBoot启动时执行指定任务
  10. ROS 5.12 上自动更新3322.org动态域名
  11. HTTP协议详细介绍~超详细
  12. fiddler https
  13. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_2_函数式接口的使用...
  14. [JNI] 开发前言
  15. IntelliJ IDEA设置字体样式
  16. 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
  17. java基础-类-抽象类-接口(自学笔记)
  18. Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
  19. IDEA安装插件提示was not installed: Cannot download解决办法
  20. 【NI Multisim 14.0操作实例——最小系统电路】

热门文章

  1. 计算机概论 第一次作业,2015计算机概论模拟试题+作业题目大全.doc
  2. 如何将全民K歌的歌曲转成mp3格式
  3. kvm虚拟化介绍及部署
  4. PHP 获取用户客户端IP的解决方案
  5. java数据类型入门程序_「JAVA零基础入门系列」Day3 Java基本数据类型
  6. 护眼台灯中的南卡护眼灯和明基哪个牌子好?两款护眼灯的真实体验测评
  7. 植物大战僵尸(4):寻找向日葵的生产速度
  8. 休斯顿火箭前日已试训莫-哈克利斯,德雷蒙德-格林,约瑟夫等球员
  9. docker 报错:bridge docker0 failed: exchange full
  10. 春节被拷问事业薪资如何应对?