腾讯面经

这篇博客详细记录了作者2020年参加腾讯暑期实习的面试经历,涵盖了一面和二面的主要技术问题。面试涉及了Java基础知识,如HashMap和CurrentHashMap的原理,线程池、TCP/IP协议、数据库、JVM内存模型、集合框架、Linux命令以及Redis的rehash过程等。此外,面试还讨论了多线程安全、TCP的三次握手和四次挥手、HTTP协议及HTTPS的区别、数据库引擎特性以及TCP与UDP的区别。面试官对面试者的回答进行了深入追问,展示了面试的严谨性和专业性。
摘要由CSDN通过智能技术生成

2020届暑期实习面试(一,二面)

一面 (时长54分钟)

  1. 自我介绍
  2. 说项目,项目问的比较深,我说到算法(正态分布),问到正态分布的细节
  3. HashMap原理
  4. Hash碰撞的解决方法

我说了两个:拉链法,开放定址法(需要看看原理)

  1. StringBuilder和StringBuffer的区别

我说到了String常量,字符串操作中最慢,之后就是StringBuilder和StringBuffer的线程安全性

  1. StringBuilder和StringBuffer使用单线程执行,有区别吗?

看过Java并发编程艺术应该有提及偏向锁的说法,说到这点面试官就okok了,恭喜答到点子了

  1. CurrentHashMap原理

CurrentHashMap的原理解析的越清晰越好,双数组+链表的结构

  1. synchronized静态方法和实例所属方法的区别

静态方法:当前类class对象作为锁 实例方法:当前对象作为锁

  1. 说说Lock
  2. 说说ReentrantLock是基于哪个类的?说说队列同步器

基于队列同步器AbstractQueueSychronier ,在说队列同步器时,我提到了两大点:队列同步器维护一个同步队列,是双向链表,同时也维护一个同步状态state;还说到它的方法分类:独占式锁和分享式锁
说说独占式锁的实现:我说到了最重要的一点就是加入同步队列的时结点需要自旋查看它的前一个结点是否获取锁,如果获取的话,它应该尝试获取锁(tryAcquire),面试官OKOK,所以这里的点在于自旋!!!

  1. 说说list下的ArrayList和LinkedList的区别

主要说ArrayList基于数组,LinkedList基于链表,LinkedList插入删除更快;ArrayList查询更快即可

  1. 讲讲线程,线程池

我提到了Excutor线程池,着重强调使用过FixedThredPool和ScheduledThreadPool没有提CachedThreadPool因为它的maximumPool是Integer.MAX_VALUE值,创建线程太多会导致cpu飙升和资源耗尽OOM

  1. 说说线程池创建时的参数
  1. corePool核心线程数,maximum最大线程数,时间,以及阻塞队列(ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue,DelayQueue等)
  1. 线程池处理task的流程

提交实现Ru

  • 25
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 45
    评论
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值