arraylist linkedlist
问了锁,用于什么地方
线程池类型,内部使用,空闲线程如何等待,除了wait还可以用什么,
运行时异常与其他异常的区别,
mybatis有什么好处,有什么可以优化的地方,
垃圾收集为什么要有stop the world的这个时间。如果没有会发生什么,
一个表3列哪个适合加索引,为什么?什么情况不走索引
线程run和start
线程的打断异常,什么情况会发生
九月下旬面的头条后端,总结一波面经
一面
1.TCP,UDP介绍,差别,UDP保证可靠性
在应用层实现确认重传,校验和
2.红黑树,AVL对比,引申B,B+树
3.网卡收到一条数据到进程处理数据,这之间经历了什么(中断的上半部下半部,网络层协议拆包)
4.大数据量(内存够用)下,快排与堆排序的对比(考察缓存命中率的对比)
5.缓存相关内容,LRU算法思想,手撕LRU的实现
二面
1.实习项目介绍,问的很深 引申到一致性hash
2.缓存失效,替换原理
3.C++多态原理
4.32位系统运行大于4G的程序,如何寻址(考察虚拟内存,虚拟地址空间)
5.手撕完全二叉树寻找最后一行的最后一个节点(没做过,当时想到的是利用特性算出最后节点的层序序号,然后除二看奇偶,找出起点到最后节点的路径)
6.手撕层序遍历二叉树
三面
1.项目介绍,实习收获了什么
2.平时看什么书,如何评价自己
3.STL vector扩容,map实现原理,红黑树,AVL
4.手撕给二叉树先序,中序序列,求后序序列
5.随便聊一些发展前景啦,城市啦有的没的
-------C++/数据结构--------
数组和链表的区别
STL里vector是什么机制
static的作用
volatile的作用
explicit的作用。。这个没答出来
C++怎么使用锁
描述一个nlogn的排序(我感觉我听错了,他可能说的是logn的搜索,不过我答完堆排序没说什么)
-------网络--------
UDP和TCP区别
流量控制 通过维护滑动窗口的大小
拥塞控制。。。我两个完全记成一样的了,还得重新看看书 拥塞窗口
------操作系统------
线程进程区别
举一个死锁的例子,并说出避免的方法
SYN攻击可能与三次握手一起问
其实就是在进行到第二阶段结束后,此时服务器不是已经发送了syn消息和synack消息了吗,这服务器真是个老好人啊,由于tcp3次握手机制,它得等着终端那家伙给它反馈synack消息啊,所以吧,服务器得分配一定的资源等着终端那家伙啊。可是呢,这终端比较坏,不但不回复synack包给服务器,反倒搞一大堆第一阶段的syn请求消息。这下服务器可不好过了啊,得腾出好多好多资源给终端留着啊,最后可能就把自己搞死了。这就是所谓的syn攻击啊,又称为ddos攻击。
syn攻击的防范?
1.通过调整sysctl.conf网络内核文件
拼多多学霸批远程面(隔了好久才捞我起来,发了意向书)
一面
1、自我介绍;
2、简历上的项目(具体介绍,怎么解决某些问题的);
3、Hashmap的get()方法;
通过 key 的 hash 值找 到在 table 数组中的索引处的 Entry,然后返回该 key 对应的
value 即可。
4、Hashmap的线程安全问题;
线程不完全
5、代码:判断单链表有没有环,找到环入口点;
6、代理模式、单例模式;
7、数据库大表查询;
8、数据库联合索引;
9、B+树和最左前缀原理;
10、说说自己的职业规划。
二面
1、自我介绍;
2、简历上的项目(具体介绍,怎么解决某些问题的,这一次项目说了好长时间);
3、原子类AtomicInteger的实现原理,CAS机制;
4、线程和进程;
5、线程和线程池;
6、StringBuilder和Stringbuffer;
可变长度字符串,前者线程不安全,后者线程安全。
7、ArraryList的get方法和add方法时间复杂度;
8、数据库事务;
9、数据库分库分表,水平上怎么分,垂直上怎么分;
10、用了消息队列有哪些好处;
11、代码:字符串反转,递归的方式。
12、聊了一下其他非技术的;
13、有什么要问面试官的。
三面
hr面,问的都是hr的常规问题,时间比较短。
总结:简历上的项目和知识点多做好准备吧,项目上的东西都会问得很细。
一面(上午,除了技术方面,闲聊差不多一个小时多一点)比较基础,JDK相关方面以及开发中的基本API:
final 是关键字,表示不可变类型
finally是try catch, finally表示出异常时一定会执行的操作
(3)finalize是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。需要注意的是,一旦垃圾回收器准备好释放对象占用的空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
二面(下午)相对来说比较深一点:
读取未提交
读提交
可重复读
串行化
最后一个算法方面的:
5亿整数的大文件,怎么排?
1.自我介绍
介绍完项目一句都没问,说问几个Java基础吧
2.异常了解过吗?有哪几种 分别举例
3.volatlie 关键字的作用有哪些
保证内存可见性,禁止指令重排
4.端口号 43 和80 分别是用于哪个协议
Whois 服务
80 是HTTP
5.mysql 索引 b 和B+ 的区别是什么 为什么要用 B+
6.怎么对查询语句优化
7.海量数据如何在单机电脑是排序
8.两两反转链表
9M 和 N 是很大的树,求M^N
作者:天空之城777
链接:https://www.nowcoder.com/discuss/302317?type=2&order=0&pos=31&page=1
来源:牛客网
1、HTTP和HTTPs的区别。介绍HTTP,然后讲一下HTTPs的连接过程;
2、用户栈和内核栈的区别;(不会....讲了用户态和内核态的区别)
3、操作系统内核;
4、C++11的新特性,share_ptr底层原理;
6、哈希表底层原理。然后写一道题,手写简易版的哈希表拉链法解决方案;
7、第二题,写一个最长公共子序列,并讲原理;
8、第三题,写一个类的拷贝构造函数;
9、流量控制和拥塞控制的区别。
海康 一面
讲项目,然后写一道字符串代码题,具体:给定一个字符串只含有大写字母和数字,从左到右找到第一个前后类型不一致的字符的位置下标,并在此中间插入一个 '-' 。
面试前还特意看了一下strcpy源码怎么写。室友考到了,我没抽到。
HR面
自我介绍;
身边的人怎么评价你;
你自己怎么评价你自己;
对工作岗位有什么要求吗?
提问:海康的应届生培训体系具体介绍一下。
Intel
讲项目,确定部门,岗位意向。
用英文介绍一部喜欢的电影或者一门书。
写一个京东购物车的类(连对象的增删改查都没想到,太菜了!);
线程和进程区别;
快排最好时间复杂度;
数据库了解吗;
代码题:一张纸上一百万个点,找到多个一对点,一对点连接起来,把它作为直径画一个圆圈,能够包含纸上所有的点。请找到这多对点。
招银网络科技 一面
写一个数组指针,和一个函数指针;
介绍一下内存碎片和解决方案;
介绍一下堆排序(才发现对它一无所知)
讲一下归并排序吧;
360 一面
代码题:
1、写一个C语言memove库函数。
2、数组中只出现一次的两个数字。
解释一下哈希的原理和哈希冲突,以及查找过程;
华为
一面
撕代码,链表反转倒数k个节点;
进程和线程的区别;
问的挺基础的,有些记不起来了;
二面
撕代码,括号匹配;
讲项目;
三面
对华为的了解;是否愿意来上海工作;家里还有兄弟姐妹吗;最成功的一件事;最失败的一件事;什么事能让你紧张;说一下华为公司未来的机遇和挑战;
欢聚时代 一面挂
说一下智能指针;
进程和线程;
介绍线程的通信方式;
互斥锁和自旋锁的区别;
读写锁和互斥锁的应用场景;
讲项目;
代码:在字符串A中找到字符串B,存在返回所在位置下标;(应该想考我KMP算法,然后我不会...)
远景 一面
说一下了解的排序算法以及时间和空间复杂度;
static关键字的作用;
const和宏的区别;
介绍红黑树;
进程和线程各自的通信方式;
锁机制有哪些;
奥比中光 一面
三代码道题
括号匹配;二维矩阵中最小路径和;无序数组的顺序k个数的最小和(k个数不要求连续);
HR面
三个词形容你自己;薪水要求;
大疆
一面
函数指针;
哈希表的机制;
vector和链表的对比;
map和unorderedmap;
内联函数的优点;
虚函数的底层实现;
C++构造函数的种类;
二面
怎么在main函数之前打印一个字符串;
多益网络 一面
代码:字符串全排列;
数学题:如何确定一个点在一个多边形里面或者外面;
哈希冲突解决方法
平时喜欢看什么书;
虎牙 一面
智能指针原理;
share_ptr线程安全性;
美团一面 (43分钟)
第一次面试很紧张,没有录音
美团二面 (21分钟)
美团三面 (45分钟)
默安科技一面
默安科技二面
默安科技HR
腾讯一面(41分38秒)
腾讯二面(视频面试,75分钟,主要是写代码)
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
腾讯三面(微信语音的)
总结一下问题:Git,docker,Python,Golang。
没问任何C++/Java。也没有问数据结构,计算机网络。
今日头条后端开发一面凉,心态爆炸。
作者:Terrances
链接:https://www.nowcoder.com/discuss/181212?type=2&order=0&pos=44&page=3
来源:牛客网
总结:问的问题很碎但是很全面,很容易看出一个人的基础掌握程度。
总结:这一面中规中矩,没有问很难的问题,只要确实尝试过简历上所说的内容,应该都可以答出来。
总结:此人说话很有条理性,一听就是大佬,全程在敲面试记录,综合体验还是很不错的。
自我介绍,介绍完了又让我确认了一遍 专业,学历,电话确认。(?)
讲讲你的ACM经历。
你有考虑过考研嘛?可以在企业中学到更多吧。开始迷了一会儿,听不清对面说什么。
对比一下考研和工作。
怎么平衡工作和休闲的时间。
你在深度学习项目里面做了什么。看过花书,西瓜书,机器学习导论。
这个项目可以用到哪些方面,夜间摄像头,老照片修复等等。
你了解Java开发框架嘛?SSH,SSM。扩展了dubbo,durid,rocketMQ,Netty。这个问题我答的太多了,磨蹭了蛮久。
讲讲rocketMQ,优先级队列,Filter,Persistence,Reliablity。
消息的一致性怎么做。保证幂等性。
回溯消费。回溯消费是指Consumer已经消费成功的消息,由于业务上需求需要重新消费。
wait(), sleep()区别。yield方法。
lock和synchronized对比。
可重入锁,偏向锁,锁粗化。
volitile保证内存的可见性,禁止指令重排,cache。
volitile保证原子性?我说可以,后来我查了下是部分可以。。。完全答错。
由于volatile保证了可见性,那么在每个线程中对inc自增完之后,在其他线程中都能看到修改后的值,所以有10个线程分别进行了1000次操作,那么最终inc的值应该是1000*10=10000。这里面就有一个误区了,volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。
内存屏障。直接说不知道,大神我真的不懂啊。。。
内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。Java编译器也会根据内存屏障的规则禁止重排序。
内存屏障可以被分为以下几种类型
- LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。
- StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。
- LoadStore屏障:对于这样的语句Load1; LoadStore; Store2,在Store2及后续写入操作被刷出前,保证Load1要读取的数据被读取完毕。
- StoreLoad屏障:对于这样的语句Store1; StoreLoad; Load2,在Load2及后续所有读取操作执行前,保证Store1的写入对所有处理器可见。它的开销是四种屏障中最大的。
- 在大多数处理器的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能。有的处理器的重排序规则较严,无需内存屏障也能很好的工作,Java编译器会在这种情况下不放置内存屏障。
解释一下copyOnWrite,讲了一下Mac OS里面对文件写时复制技术。
叫车时候,怎么给周围车辆排序?你能拿到哪些数据,常见路线,加权堆排序或者其他机器学习方法。怀疑是滴滴的大佬?
堆排序比其他排序好在那里?(时间)稳定性?快排什么时候O(nlgn)退化O(n^2),堆一直O(nlgn)。后来大佬说他没有说时间,说的是排序稳定性。那么堆不是稳定的,都怪电话听不清,这锅我不背啊。
海量数据找TopN。锦标赛排序,败者树。大根堆,小根堆。
完全二叉树,满二叉树。红黑树的几个性质。
红黑树旋转次数。我拓展了伸展树,二三四树,B+树的具体实现相同不同点。
hashmap什么时候用红黑树。冲突量>8, <6的时候退化为链表。为什么要这么做。性能比较。
觉得前面16-18答的不好,我说我的代码实现能力还可以(疯狂暗示coding手速能不能加点分)。
你还有什么想问的。不同部门情况。
offer情况,所以你会去腾讯?考虑地域问题,家人问题也可能选阿里。
您是哪个部门的?天猫超市。其他问题。
总结:问题都很不错,很全面也很深入。奈何本人太菜,答错了几个点。
面试官都很友好,但是后面几面电话通话质量太差了,每一面都有听不清的情况,面其他公司没有这个问题。