有赞面经(详细)

有赞一面:

自我介绍

1、java的集合类了解吗?说一下hashmap的原理和实现。我:balabala.....

2、hashmap线程不安全,请问为什么线程不安全?答,并发时会成环。什么时候成环?比如我有两个数据要装入hashmap。

3、hashmap1.7从链表头插入数据,1.8从链表尾部插入数据,有什么区别为什么?使用红黑树为什么能提高查询的性能?什么时候hashmap开始使用红黑树,阈值是多少?

4、hashmap的线程安全怎么实现?答concurrenthashmap,让我介绍原理,如何上锁。插入数据时候一定上锁吗?怎么样获取concurrenthashmap的size。

5、hashset和hashmap的区别,写代码使用hashmap实现一个简单的hashset。(没写出来)

6、项目中有没有使用过并发编程?用过哪些锁?答用过synchronized和lock。他们的区别是什么?答Synchronized底层用mutex实现。在软件层面依赖Jvm,Lock底层基于AQS实现,在硬件层面依赖特殊的CPU指令(CAS)。简单介绍下CAS。Balabalabala。问CAS使用中存在什么问题?答ABA问题,怎么解决?说了版本号方式,atomicstampedreference和pause。还答了自旋时间过长消耗CPU资源。

7、AQS的框架中,自定义同步器使用哪些方法,分别表示什么含义?答isheldexclusively,该线程是否独占资源。tryacquire尝试获取资源tryrelease尝试释放资源这两种是独占方式,tryacquireshared,tryreleaseshared同前两种,不过是共享方式。

8、一个线程怎么判断自己是否可以获得共享资源的锁?答一个线程在获取共享资源前会判断markword里存放的是不是自己的threadid如果是则该线程处于偏向锁,可重入。若不是,则使用CAS进行切换,锁升级为轻量级锁,偏向锁释放,清空mark word,两个线程开始竞争,成功的将自己的markword存入对应的threadid,失败的开始自旋。

9、共享资源state何时增加何时减少?对于synchronized和lock有什么区别?答获得锁加一,释放减一。synchronized的state只能为1或者0,lock锁的state可以一直增加,但是增加多少就要减少多少直到为0锁释放。(可重入锁)

10、state用什么修饰符修饰?答int和 volatile。

11、volatile有什么作用?答1、禁止指令重排序,并介绍了原理,说了内存屏障的机制。2、保证多线程并发执行时某个线程对数据的修改对其他线程的可见性。说了原理。主存,本地栈,不从缓存取值。3、这个关键字不保证操作的原子性。是一种轻量级的synchronized实现。

12、数据库中,mysql用到哪些引擎?区别。答balabala

13、索引有哪些?聚簇索引和非聚簇索引的区别?

14、为什么使用索引查数据更快?什么时候使用索引查数据比全表扫描还更慢?使用什么关键字会触发全表扫描?

15、建立联合索引a,b,c,请问查询条件为a,c是否使用索引?a,b是否使用索引?b,a,c是否使用索引?

16、算法题,一个list中快速找出倒数第三个数。

17、http协议与tcp/ip协议有什么区别?http三次握手画图说明。timewait的时间为什么是2msl?

18、tcp五层模型?

19、http协议位于osi模型的哪一层?

20、集群和单机的区别?

21、redis简要介绍下。有哪些常用的数据结构?

22、redis为什么查询数据这么快?答1、用c编写的,2、单进程单线程的keyvalue数据库,不用加锁,不存在上下文切换的开销,很少消耗cpu资源。且没有主键和范式的约束。但是启用多个redis实例时要使用分布式锁。3、I/O多路复用,一个线程去遍历多个I/O流(sock),有数据的I/O流,标记并调用代码块进行处理。多路指的就是网络连接。额外介绍了select,poll,epoll的区别。

23、当一个线程去一个其中一个redis实例没有取到数据,该数据在别的redis实例,此时怎么办?

二面:

1、怼项目。负责哪块工作?具体细节怎么实现的?我觉得这么实现效率不高,怎么优化?…表里的数据都是什么数据结构?

2、介绍下mapreduce的原理。

3、udf函数有什么作用?

4、给100个数据,使用mapreduce,让我写代码啥的?这个算法题题我都没听懂

5、判断一个无序数组中是否有两个数等于目标数。暴力破解,算法时间复杂度o(n2)

6、手撕快速排序,问思路,让写,写完问是否有辅助空间?辅助存储空间复杂度?

7、数据库中,exist和in的区别?


Over。其实技术题都答上了,一面的集合类代码题没写出来,二面那个算法题没写出来。二面结束让我回去等消息,感觉挂了。我猜是写出来的算法题面试官对我的代码不满意,挂。唉,还是写得少。深夜码字,满满干货,我觉得有赞的难度超过斗鱼。各位路过的牛油觉得好就给个赞吧,请大佬不要嘲笑。这次没面过很伤,感觉自己快把知识储备都用上了。安
#Java工程师##有赞##面经##秋招#
全部评论
能否请问一下, synchronized 不是本身就是 可重入锁么?  如果仅仅是 Lock  lock = new Lock() 的话,应该是不可重入锁吧??   小白求解答...
点赞 回复 分享
发布于 2018-11-09 14:41
感谢分享~
点赞 回复 分享
发布于 2018-11-09 11:21
23题答案:由于一个redis实例的内存有限,通常会启动多个redis实例来提供服务。此时构建redis集群的方案通常有三种:1、客户端分片2、***分片、3、redis原生集群。通常采用***分片的方式。如果采用codis反向***集群提供服务的方式,解决方案为:Codis在接收到客户端请求后,首先根据Key来计算出一个hash,映射到对应slots,然后转发请求到slots对应的Redis。
点赞 回复 分享
发布于 2019-04-16 11:52
请问下楼主感觉 Java网络编程的知识点问的多吗?需要重点复习吗
点赞 回复 分享
发布于 2019-03-09 12:47
第五题答案: import java.util.HashMap; public class MyhashSet<E> {     private HashMap<E,Object> map;     private static final Object PRESENT = new Object();     public MyhashSet() {         map = new HashMap<>();     }     public int size() {         return map.size();     }     public void add(E e) {         map.put(e, PRESENT);     }     public void remove(E e) {         map.remove(e);     } }
点赞 回复 分享
发布于 2018-11-26 19:17
好难,有答案的面经,好评
点赞 回复 分享
发布于 2018-11-13 21:12
m
点赞 回复 分享
发布于 2018-11-10 09:53
楼主现场面还是电话面?
点赞 回复 分享
发布于 2018-11-09 23:15
楼主是小白,不是什么大佬!面经有错误欢迎大家交流指正学习!
点赞 回复 分享
发布于 2018-11-09 15:25
面的哪个部门?感觉和我面的问题差不多
点赞 回复 分享
发布于 2018-11-09 10:49
感觉回答的这么好,应该能过的吧 - -!
点赞 回复 分享
发布于 2018-11-09 10:05
楼主线程安全那块看的什么资料,感觉了解的好深入
点赞 回复 分享
发布于 2018-11-09 09:41
有答案的面经 好评
点赞 回复 分享
发布于 2018-11-09 09:40
感觉都还挺常见的,MapReduce那一块完全不会
点赞 回复 分享
发布于 2018-11-09 09:40
楼主基础很好呀。没去面一下bat吗
点赞 回复 分享
发布于 2018-11-09 08:56
死环是在扩容的时候发生,查找两个数可以借用hashmap,复杂度n
点赞 回复 分享
发布于 2018-11-09 03:20
二面还问了B树和B+树,区别?为什么B+树更稳定。给1000个索引的值,使用B树和B+树要遍历几次结束
点赞 回复 分享
发布于 2018-11-09 02:57

相关推荐

腾讯teg-后端&nbsp;一面&nbsp;2025/03/191h40min-&nbsp;2道算法题:&nbsp;&nbsp;-&nbsp;只有012的数组按012的顺序摆放(不使用代码库的排序函数)面试官希望不使用排序的思路&nbsp;&nbsp;-&nbsp;lc442&nbsp;数组中重复的数,O1空间,On时间&nbsp;&nbsp;-&nbsp;第二题做不出来,换成:最长不重复子串(a了)-&nbsp;八股(计网、mysql、操作系统、数据结构)拷打&nbsp;&nbsp;-&nbsp;两端建立通信,客户端抓包可以抓到哪些包&nbsp;&nbsp;-&nbsp;linux&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;dmesg&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;ps、pidstat&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;系统oom,查日志&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;查某个程序运行在哪个目录&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;strace&nbsp;&nbsp;-&nbsp;dma是&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;DMA(Direct&nbsp;Memory&nbsp;Access,直接内存访问)&nbsp;是计算机系统中一种高效的数据传输技术,允许外部设备(如硬盘、网卡、显卡等)直接与内存(RAM)交换数据,而无需通过&nbsp;CPU&nbsp;的介入。这种方式大幅降低了&nbsp;CPU&nbsp;的负担,提升了系统整体性能。&nbsp;&nbsp;-&nbsp;线程、协程;协程共享线程的寄存器吗、线程共享进程的哪些东西、进程如何切换&nbsp;&nbsp;-&nbsp;系统调用&nbsp;&nbsp;-&nbsp;数据结构&nbsp;哈希表,发生冲突怎么办&nbsp;&nbsp;-&nbsp;go程序发生内存泄露怎么排查&nbsp;&nbsp;-&nbsp;go的make、gmp的worker&nbsp;steal、全局G队列&nbsp;&nbsp;-&nbsp;什么时候选择多线程执行、什么时候选择单线程&nbsp;&nbsp;-&nbsp;tcp的keepalive和http的keepalive、tcp保活机制、接受到历史请求怎么处理&nbsp;&nbsp;-&nbsp;对大模型的看法&nbsp;&nbsp;-&nbsp;说说项目里的h264解码同程旅行-后端&nbsp;一面&nbsp;2025/03/2050min(无算法,俩面试官)-&nbsp;主要是聊项目、实习的产出&nbsp;&nbsp;-&nbsp;音视频这个项目主要做了什么,作为组长负责了啥&nbsp;&nbsp;-&nbsp;OTEL&nbsp;sdk怎么用的,里面有什么属性,怎么上报的&nbsp;&nbsp;-&nbsp;基于项目背景,问了一些sql怎么写-&nbsp;linux的命令&nbsp;&nbsp;-&nbsp;查看网络连接&nbsp;&nbsp;-&nbsp;查看某个端口属于哪个程序&nbsp;&nbsp;-&nbsp;查某个端口的连接处于什么状态-&nbsp;tcp四次挥手-&nbsp;http的结构-&nbsp;实习公司内部框架,微服务项目结构等等-&nbsp;sql注入&nbsp;&nbsp;-&nbsp;检验&nbsp;&nbsp;-&nbsp;orm层:mybatis&nbsp;参数化查询-&nbsp;个人未来三年规划腾讯teg-后端&nbsp;二面&nbsp;2025/03/241h13min-&nbsp;面试官介绍了6~8分钟部门负责的内容(服务流量上亿)-&nbsp;三题:&nbsp;&nbsp;-&nbsp;查TCP的长连接&nbsp;和&nbsp;监听的端口(netstat&nbsp;的-p表示啥)&nbsp;&nbsp;-&nbsp;最长不重复子串&nbsp;&nbsp;-&nbsp;由三种括号组成的字符串,判断合法性,有优先级:{&amp;amp;gt;[&amp;amp;gt;(-&nbsp;go的context概念?场景?被调用方怎么知道ctx超时结束了?(select&nbsp;{&amp;amp;lt;-ctx.Done()}&nbsp;)-&nbsp;mysql的gap&nbsp;lock概念?场景?-&nbsp;mysql,只有主键索引,查询时使用其他字段去查询的话,是怎么解决一致性问题的?(MVCC)-&nbsp;口述执行细节:无序链表变成有序。(一开始说了冒泡算法,后面想起了自底向上的归并排序)-&nbsp;tcp三次握手中第二次握手丢失会怎么样?-&nbsp;客户端发送第三次握手(丢失)后,又发送数据包,会怎么样?&nbsp;&nbsp;-&nbsp;https://zhuanlan.zhihu.com/p/706132932&nbsp;&nbsp;-&nbsp;客户端没有发数据包:ACK&nbsp;报文是不会有重传的,当&nbsp;ACK&nbsp;丢失了,就由对方重传对应的报文&nbsp;&nbsp;-&nbsp;客户端有发数据包:在第三次握手中的ACK报文段,根据RFC&nbsp;793,是可以携带数据的。这是因为此时连接已经基本建立,客户端可以开始发送应用数据,而不需要额外的往返时间(RTT)。除了最初的连接建立请求(SYN报文段)之外,TCP规定所有其他报文段,包括数据传输报文段和连接关闭报文段,都应该将ACK标志位设置为1。可以看到,客户端发送的这个数据包,它也会把ACK标志置为1,那么服务端就可以把这个数据包当做是ack确认包从而建立连接。-&nbsp;实习期间遇到的最大难点,如何解决-&nbsp;团队协作遇到的难点-&nbsp;反问:自适应限流算法常用吗?比较理想,计算有延后性,像一些吞吐量大、敏感的场景就用不上,最常用的还是简单的限流算法,比如平等地按比例限流。腾讯-后端&nbsp;三面&nbsp;2025/03/2740min-&nbsp;简单自我介绍-&nbsp;实习里最有难点的地方。(就是比较难实现的点)-&nbsp;负载均衡算法,一致性哈希算法扩缩容-&nbsp;从文件系统中读取后修改,再通过socket发送网络,里面涉及了几次数据拷贝&nbsp;&nbsp;-&nbsp;底层怎么做?(sendfile)零拷贝,mmap是什么?(mmap+write:使用mmap代替read,减少一次CPU拷贝,节省一半的内存空间)&nbsp;&nbsp;-&nbsp;mmap实现零拷贝_mmap&nbsp;零拷贝-CSDN博客-&nbsp;多副本怎么保证一致性?(只知道redis的redlock)了解强一致性算法吗?-&nbsp;设计题:一个微博系统,类似发个朋友圈,需要什么结构存储这种文章列表?大v这种,有大量的粉丝,怎么设计?(单用消息队列缓解写压力还不够,可以给每个人维护自己的大v列表,查完普通朋友的文章再另外去看大v有没有发文章,这样大v就不用往大量粉丝的文章列表里一直写入)-&nbsp;服务怎么保证高可用?(说了很多事后解决方案)说一下预防的手段、除了组件内部自身的高可用,自己能做的有哪些,负载均衡在哪一方做的,自动计算权重的吗?(我们要传入接口耗时等数据,然后负载均衡再计算)-&nbsp;最近学习的新技术?平时如何学习一个新的技术?看什么公众号、网站学习的?腾讯研发管理部-后端&nbsp;HR面&nbsp;2025/03/2825min-&nbsp;面试前发了云证-&nbsp;聊项目遇到的难点,有没有失败过的项目-&nbsp;对于工作看重哪些地方-&nbsp;要不要回学校搞毕设什么的-&nbsp;反问
点赞 评论 收藏
分享
评论
20
184
分享

创作者周榜

更多
牛客网
牛客企业服务