面试刷题10-11
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、finalize的区别
final 是关键字,表示不可变类型
finally是try catch, finally表示出异常时一定会执行的操作
(3)finalize是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。需要注意的是,一旦垃圾回收器准备好释放对象占用的空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
- Java中==、equals与hashCode的区别和联系
- 谈谈Java容器ArrayList、LinkedList、HashMap、HashSet的理解,以及应用场景
- 谈谈线程的基本状态,其中的wait() sleep() yield()方法的区别。
二面(下午)相对来说比较深一点:
- JVM性能调优的监控工具了解那些?
- 简单谈谈JVM内存模型,以及volatile关键字
- 垃圾收集器与内存分配策略
- 垃圾收集算法
- MySQL几种常用的存储引擎区别
- 数据库的隔离级别
读取未提交
读提交
可重复读
串行化
最后一个算法方面的:
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分钟)
第一次面试很紧张,没有录音
- 自我介绍+项目。
- 线程的实现,同步,优化
- 线程同步,线程私有变量。
- 自旋锁,锁膨胀。
- mysql索引怎么实现。最左前缀。成为PK的条件
- Time-wait和Close-wait出现在什么时候?
- 怎么实现反射。
- java序列化,netty
美团二面 (21分钟)
- Spring Dao用哪种设计模式用得最多?
- hibernate注解和XML。
- 装饰器模式。抽象工厂模式。
- AQS的源码和ReentrantLock的源码
- Spring AOP了解过吗。
- Spring管理的bean的对象存储在哪里。类的元信息比如常量表,字面量,静态字段在方法区(Method Area里),关于对象的数据在jvm堆里。
- HashMap原理,hash冲突解决,然后又扯到红黑树。
美团三面 (45分钟)
- 没有自我介绍,强怼项目。
- 线程池,线程池里面的线程的状态有哪些。
- 给链接手撸hash拉链。这个花了25分钟左右调到没BUG了。
- 发展规划。
- 想问的。
分布式锁:多台机器部署的应用对一个共享数据做同步,问如何解决。
默安科技
默安科技一面
- 自我介绍+项目。
- 二叉树前序遍历。
- 深入了解项目。
- 线程进程区别,线程状态。
- 做了几个题,具体有些忘记了。
- 怎么看端口占用状态。答lsof -i, netstat。
- Linux常见命令。ls,mv,cp,source,cron等等。
默安科技二面
- 链表找中间节点。快慢指针
- 讲讲快排。口述伪代码。
- TCP/UDP区别,用途,优势。
- socket编程一般顺序。
- 二叉树层次遍历,口述伪代码。
- Java基础,封装,多态。
- 默安科技主要还是C++主导,Java岗位也有。
默安科技HR
- 问了下基本情况就给了offer,五月正式offer
- 默安在我比较绝望的时候给了我很大的信心,谢谢默安科技。
- 记事本里手写OOP实现一个签到的程序。
- 从一堆数字中O(n)找不重复的数字。
- 字符串处理,魔改KMP。
- 数学智力题,64匹马取前8,问最快要几次。11次。
- 简历面,问项目做了什么,主要的技术栈。
腾讯一面(41分38秒)
- 深入问了我项目。
- 线程池,连接池,各自优点。
- Java常见设计模式。
- 讲讲builder建造者模式。这个答的不太好。
- TCP/UDP区别,什么时候该用什么。
- UDP实现TCP。
- 设计一个APP,TCP/UDP具体运用。
- 数据库索引,数据库引擎。
- 学习方向,我说C++/Java/Python比较均衡。
- 监督学习,无监督学习。
- 科技创新立项都做了什么。
- 没给我机会问问题,大概还是我太菜了。
腾讯二面(视频面试,75分钟,主要是写代码)
- ACM复杂规则模拟。这里可以用Java责任链模式,但当时问的时候我没有答出来,看过忘记了。
- Java GC。开始背诵balabala。
- 双亲委派机制。
- 产生死锁的四个必要条件:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
- 独占锁,共享锁和更新锁。
- 还有什么想问的。问了下技术氛围和学习情况。
- XSS注入攻击了解不。答不会。
- SSH登录,我说了半天,对面说这个方法叫什么。想了一下,非对称加密。
- 实现一个人脸识别软件要多少工时?
- 说实话,这一面面的我快自闭了,有些看过就忘了。
腾讯三面(微信语音的)
- 进程调度,进程状态切换。
- 怎么用Java/C++实现线程池,具体的做法。
- Spring框架,ORM框架Hibernate讲讲。
- IOC, AOP,IOC(控制反转)和DI(依赖注入)有什么不同,Java反射机制。
- 适配器模式(Adapter pattern),桥接模式(Bridge pattern),组合模式(composite pattern)
- 主要问我想做的技术方向。
- 介绍腾讯的部门和人员划分等。
- HDFS, Paxos选举协议,zookeeper和redis一点点。
- 口头offer
字节跳动(今日头条)
- 手写归并排序。
- Git版本控制。按项目怎么用答了一下,分支冲突解决。
- Python装饰器。答当时我用来写单元测试的,久远,忘记了
- 讲讲docker。答隔离机制,挂载点,线程,还扯了内核调度,估计不是想要的答案。
- docker内网IP段是什么。
- 数据库索引机制。
答B+树,hash,各个优势balabala,然后说不太对?
答聚簇索引,非聚簇索引balabala,还不太对?没懂这个题问什么。 - 数据库B+树。能答的都答的差不多了。
- 乐观锁悲观锁,CAS, ABA问题。
- 还想问的?您是做什么的,GoLang开发。
总结一下问题:Git,docker,Python,Golang。
没问任何C++/Java。也没有问数据结构,计算机网络。
今日头条后端开发一面凉,心态爆炸。
作者:Terrances
链接:https://www.nowcoder.com/discuss/181212?type=2&order=0&pos=44&page=3
来源:牛客网
涂鸦智能
涂鸦一面
- 自我介绍。
- 主要问了下项目。
涂鸦二面
- 线程进程区别,线程状态。
- Linux权限755是什么。
- select pool epoll,文件描述符FD。
- 设计一个多用户APP,你会怎么分配,安排,和腾讯的问题比较类似。
- 还有一些碎的问题。
- 这一面和负责人聊得非常开心。如果没有AT,我估计会选择涂鸦。
涂鸦HR面
- 实习生打的电话,告知收到腾讯offer,不互相浪费时间。
微软
- 待补充
阿里巴巴(新零售)
阿里一面(38分50秒)
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 看你提到了连接池,druid连接池。
- 常见排序算法。快排,二路归并,冒泡,插入,锦标赛排序。topK问题。
- TCP三次握手,四次挥手。
- 数据库引擎对比,索引。Innodb,Myisam和Memory对比了下,B+树,hash,between操作,left join操作。
- 看你搞ACM,你给我讲个简单的数据结构,答了并查集和线段树。
- 怎么保证多线程操作的原子性。原子类,锁,volitile部分操作。
- 深入问了乐观锁,悲观锁及其实现。我提了CAS, ABA但是不问我hhh。
- Python机器学习基础。
- 怎么解决依赖问题。
- zookeeper锁,数据库隔离级别。
- docker隔离部署问题。
- taobao查询排序要考虑那些因素?这个问题贼困难了,能说的东西很多,估计是看了我简历上机器学习,答了过往消费记录,搜索记录,协同过滤,聚类。
- 有什么要补充的呢,要考虑商家那边的情况,balabala。
- 还有什么想问的。
总结:问的问题很碎但是很全面,很容易看出一个人的基础掌握程度。
阿里二面(45分39秒)
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 项目中你相比于别人的优势在哪里,就是你用了别人没有的东西。
- 你觉得你的能力大概在什么方面。ACM能力。当时以为要我敲代码了。一边说话一边开机。
- 你是如何进行学习的?
- 画一个软件的执行流程,UML, ER。
- 有没有写过开发文档。
- Java怎么加载类,加载验证准备解析初始化使用卸载,双亲委派机制。bootstrap class loader,extend class loader具体。
- linux常用命令。iftop,netstat,htop,apt,yum,source,corn,docker等等。
- 讲讲docker。
- MVC,MVVM对比。
- Spring的IOC, AOP。
- ORM框架Hibernate讲讲。
- 设计模式了解吗?
- 还有什么想问的。
总结:这一面中规中矩,没有问很难的问题,只要确实尝试过简历上所说的内容,应该都可以答出来。
阿里三面(leader面 18分59秒 + 24分53秒)
- 提前一天预约
- 告诉我今天面试40分钟左右,包括自我介绍,技术知识,项目经验。
- 自我介绍。奖学金,ACM,深度学习,传统项目开发,负载均衡优化等。
- 你维护的****和Github主要内容,刷ACM题情况。
- 你的哪块基础知识比较好一点?每块都很平均吧。。。
- TCP如何在不可靠网络传输上实现可靠传输?超时重传,滑动窗口。TCP状态。
- TCP超时时间,RTT怎么计算。
- 4G切换Wifi时候TCP怎么实现流量变化?分组丢失,快重传,快恢复等。路由器交换机排队。
- 常见的TCP优化算法。TCP拥塞算法,答了谷歌BBR和锐速的原理以及简单实现。
- 操作系统linux内核对TCP优化的办法,HTTP1.0,1.1,2.0每个版本做的更新。状态100,host字段,谷歌浏览器6个TCP连接等,支持长连接。
- HTTP中cookie和session的区别。客户端服务端,表示用户的方法,禁用cookie时候怎么办。
- 在上一条的基础上拓展答了Redis.
- session存的数据结构,对于单个用户set,多个用户hashmap。
- hashmap的原理,key-value计算,冲突解决的三个方式。和二分时间复杂度对比。rehash造成环。
- hashtable线程安全嘛,讲讲线程安全具体实现。
- conCurrentHashmap和Hashmap性能上除了分段锁还有什么别的优化。我只回答了段内扩容。
- 高并发场景下hashmap使用,CAS,ABA问题。
- 并行和并发的概念和区别。时间片,上下文切换。
- 数据库范式,NoSQL了解过吗?
- UML图,ER图,流程图。
- 数据库的索引,最左前缀,abc三个主键。
- 跨表查询常见优化思路。
- 电话中断...吐槽阿里园区的电话质量,每一面都有问题。
- 打通之后简单聊了一下,有没有别的公司offer,说有美团,腾讯offer,挑战微软。
总结:此人说话很有条理性,一听就是大佬,全程在敲面试记录,综合体验还是很不错的。
阿里四面(交叉面 天猫超市)
-
自我介绍,介绍完了又让我确认了一遍 专业,学历,电话确认。(?)
-
讲讲你的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情况,所以你会去腾讯?考虑地域问题,家人问题也可能选阿里。
-
您是哪个部门的?天猫超市。其他问题。
总结:问题都很不错,很全面也很深入。奈何本人太菜,答错了几个点。
阿里HR面
- 自我介绍开局缓解尴尬。
- ACM,学习的内容,论文情况。
- 学习方法,实践方法。
- 初高中算法竞赛和大学竞赛有什么不同。
- 你怎么自学法。
- 怎么平衡工作和学习。
- 花书,机器学习导论主要讲了哪些内容?讲的比较浅层,但是HR反问了一个点。(HR也懂技术,大雾)
- 你带领的计算机社团在大学期间的贡献。
- 社会实践方面“十佳团队”,整个活动内容,流程讲讲。
- 其他常规问题。
- 想问的,部门人员情况。
小吐槽
面试官都很友好,但是后面几面电话通话质量太差了,每一面都有听不清的情况,面其他公司没有这个问题。