首页 > 笔经面经 > 有赞面经(详细)

有赞面经(详细)

头像
渣硕遨游牛客
编辑于 2018-11-09 14:12:43
回复15 | 赞 6 | 浏览1632

有赞一面:

自我介绍

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。其实技术题都答上了,一面的集合类代码题没写出来,二面那个算法题没写出来。二面结束让我回去等消息,感觉挂了。我猜是写出来的算法题面试官对我的代码不满意,挂。唉,还是写得少。深夜码字,满满干货,我觉得有赞的难度超过斗鱼。各位路过的牛油觉得好就给个赞吧,请大佬不要嘲笑。这次没面过很伤,感觉自己快把知识储备都用上了。安

15条回帖

回帖
加载中...

本文相关内容

近期热帖

热门推荐

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-808北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号