先问自我介绍,说一下你认为的团队合作?
用过Linux系统吗?常用指令(我说不太了解,就没问)
说一下虚拟内存?
介绍一下hashmap?
hashmap和hashtable的区别?
算法题:10万行数据,每一行都是一个int类型的数,按数字出现的频次取出现次数最高的10个数 top K
输入是一个整形数组,输出:数字+频次
思路:可以自己定义一个类,里面key为出现的数字,value为出现的频次
然后新建一个容量为10的小顶堆,按照value进行排序。
我是用hashmap统计的,然后再对value用小顶堆(priorityqueue)排序,需要把value和key绑定。如果下一个的value小于堆顶则丢弃,大于堆顶则插入。
但是最后没能实现。。
滴滴提前批面经(已凉)
JDK JRE JVM的区别?
JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。
JDK = JRE+Java开发工具
JRE = JVM+核心类库(libs)
JVM是用来执行字节码文件的
浏览器输入一个网址会发生什么变化?
详细说一下DNS域名解析服务器?DNS用的是什么协议(UDP)
TCP三次握手,那四次挥手呢?为什么要四次挥手?
TCP怎么保证可靠通信?
超时重传和确认机制
TCP和UDP的区别?
TCP是面向连接的,TCP传输的是字节流,TCP只能点对点,保证传输的可靠性
UPD不是面向连接的,传输的是报文,可以一对多,多对一,多对多,提供尽最大努力交付的
进程和线程区别?
Spring常用注解?
Spring事务传播机制?(不知道)
Spring事务隔离级别?(只知道有五种)
OSI分层模型
TCP/IP分层模型?
网络拥塞一定会导致丢包吗?为什么?
ArrayList中删除值为指定的数,能够直接remove吗?会有什么问题(如果直接remove,比如remove了位置为0的元素,则后面的元素会前移,之前的index为1的index就变成了0,所以会有问题)
算法题:有三台服务器,分别是一定容量,也就是权重,如果来了若干个包,怎么分配让每个服务器处理的包的数量和权重成正比?
可以把权重相加,比如第一个为10,第二个为20,第三个为30.那么加起来就是60.来一个包,rand一下产生一个0-1之间的小数,再乘以60.如果落在0-10就分配给第一个服务器,如果落在10-30就分配给第二个服务器,如果落在30-60就分配给第三个服务器。
就有点大数定律来求概率的意思,当时没有想到这个方法。。。
猿辅导一面+二面(已凉)
一面:说一下自己的项目,项目中的技术栈
如何保证缓存和数据库的一致性
当服务比较多的时候,怎么保证服务的可用性
算法题:求树的直径 BFS
判断一棵树是否为二叉平衡树
面试官非常温柔!基本上没问什么问题都是自己在说二面:
1、说一下计算机网络的七层模型
2、TCP和UDP有什么区别
3、说一下常用的I/O模型
4、说一下Java中的多线程和操作系统中的多线程有什么区别(不会)
5、线程池有哪些参数,如果让你自己实现一个线程池,你会怎么实现(不会)
6、算法题:大数相乘
7、TCP保证可靠传输的机制
大数相乘要求调通,后面上leetcode才发现自己这道题根本没有做过。。。所以浪费了很多时间,反问环节说算法还有欠缺。。
字节教育提前批面经(已凉)
线程进程,怎么进行上下文切换的,进程切换的过程?中断?谁去执行中断呢?
讲一讲内存分页,怎么进行内存分页
100个0~1000的正整数,怎么找到第一个缺失的数 桶排序
两个链表交叉,怎么找交叉点
已知rand(5)={0,1,2,3,4,5},怎么生成rand(7) 经典题目了
一个1g的数,空间复杂度最小找最小的10个 topK
一个10g的文件,内存空间200M,怎么按照出现次数排序。考虑内存。。 MapReduce
说一下hashmap,线程安全的hashmap
说一下Java中的锁是怎么实现的
算法题:
1、找一个数字在非严格递增数组中的位置,比如234456找4出现的位置返回{2,3},如果没有返回{-1,-1},因为不太确定先用了二分然后用了中心扩展法,被吐槽时间复杂度太高,后面说了一下单纯二分找左右边界的方法
2、链表翻转的递归算法,不会递归的写了非递归,后面尝试递归失败了
字节电商提前批面经(已凉)
问了很多我的知识盲区,一直在问框架和操作系统,但是真的不怎么会
算法题:k个一组翻转链表,没有撕出来
百度提前批面经
百度一面面经
计算递归的时间复杂度
说一下OSI模型,TCP/IP模型
说一下每一层的协议:应用层:HTTP FTP DNS SMTP
传输层 UDP/TCP
网络层 IP
DNS是基于传输层的什么协议的?
TCP和UDP的区别?
TCP怎么保证到达的数据是有序的?
说一下四次挥手
说一下滑动窗口
短连接和长连接了解吗?
算法题:1、三数之和
2、有三种不同价格的商品,你需要取其中的k件,请写一个函数计算所有可能得到的价格
百度二面面经
说一下jvm
说一下Java类加载机制
说一下volatile关键字
Volatile怎么保证可见性和有序性的
单例设计模式里面的懒汉模式的双重校验,为什么要用volatile修饰,如果不用volatile修饰
多个线程去操作,会有什么问题
说一下线程池吧
说一下https怎么保证数据的完整性
说一下redis的数据类型
说一下redis的持久化
Rdb快照会影响目前线程执行任务嘛?(BGSAVE用子进程操作,不会影响)
说一下redis的淘汰策略(LRU):
你知道redis的lru怎么实现的嘛?(不太会)
普通的LRU底层,双向链表+hashmap
算法题:旋转数组找最小值
将一个链表向右旋转k个数
百度三面面经
算法题:字符串的全排列
基础知识问的不算多,但是也不难,很多都忘了
百度四面面经
算法题:从原点开始走,每次只能向上向下向左向右走一步,问走n步最多能走到多少个格子,要求时间复杂度不能是4^n
一开始很傻的还是用了回溯,被提醒时间复杂度不符合要求
然后用数学归纳法勉勉强强猜出来了
最外层是4*n,因为可以走回头路,所以里面一层是4*(n-2)然后就可以用数学归纳法写出来。如果是偶数步,最里面那一层就是原点就是1,如果是奇数就是4*(n+(n-2)+...+1)
聊了很多项目的事情,介绍你觉得最熟悉的项目,我介绍的是学校的科研项目,然后项目亮点
你觉得自己做的好的地方,自己的优势巴拉巴拉,聊了接近50分钟吧
另外一个部门,上面的部门是部门直推的。。
百度一面面经:
1、说一下Java的特性,封装继承多态,多态是什么?
2、说一下jvm的内存模型,垃圾回收
3、redis怎么设置分布式锁
4、说一下数据库索引
5、说一下redis和mysql的区别
6、redis为什么快
7、Java的锁的实现方式
8、TCP和UDP的区别,TCP三次握手
9、说一下DNS解析服务
10、我们现在的视频是采用什么协议进行传输的
11、HTTP是无状态的,怎么保持他的状态
12、说一下排序算法,1T文件怎么排序,
13、大顶堆或者小顶堆的插入时间复杂度是多少
14、10亿个数字找最大的500个(建立一个容量为500的小顶堆,每次来一个数字与堆顶的数字比较,如果比他小,就不要,否则就插入)
一面(0810,50min)
1、项目
2、TCP三次握手的过程
3、为什么要进行第三次握手
4、操作系统为什么要设置虚拟内存,主要用于解决什么问题
5、不用虚拟内存直接用物理内存效率是不是更高
6、100万高考考生,对其进行语文成绩的排名
7、快排及其优化
8、Redis持久化方式
9、算法题1
数组里每个数字表示在当前位置能跳的最远距离,求最左边跳到最右边的最小跳跃次数。比如[3,5,1,4,1,2,3,6,1,1,1,1
贪心和动态规划。
10、算法题2
输出二叉树指定层级的节点值 in:(TreeNode *root, int level) BFS
二面(0810,60m)(没有录音,凭记忆记录)
1、三次握手
2、Time-Wait和Close-Wait
3、TCP拥塞控制
4、快重传
5、共享内存怎么实现
6、copy-on-write
7、CAS
8、MVCC快照实现原理
9、Redis数据结构
10、跳表数据结构、时间空间复杂度
11、rehash实现
12、redis持久化
13、算法题
链表调整,若输入链表为:1 -> 2 -> 3 -> ... -> n-1 -> n -> null,
调整后为:1 -> n -> 2 -> n-1 -> 3 -> ... -> null
三面(0810,90min)
1、项目
2、算法题1
二叉树结点的最低公共祖先
3、介绍一下Thrift
4、Thrift、Protobuf、json的关系
5、描述一下大根堆和小根堆
6、大小根堆为什么必须是完全二叉树
7、算法题2
数组转为大顶堆(有比递归效率更高的方法?)
8、各个排序算法及其时间空间复杂度及其实现原理
9、算法题3
快排实现
10、最近半年看过什么技术类的书籍
11、为什么JVM有那么多的实现
12、算法题4
用定长数组实现一个队列,有push、pop、isEmpty操作,写成一个类,构造函数的入参是队列的大小。时空复杂度尽可能低。
0818收到意向书
笔试
0810 场 AK
面试
- 总体评价:面试官好...模板化,不能和俺在有点亲切的交流吗????
- 岗位:Java开发
- 部门:淘系新零售
- 代码题目:力扣 290. 单词规律,3分钟AC,有点简单,再来一个: Offer 19. 正则表达式匹配 15分钟AC
问题:有一说一,第一次遇见这么阴间的面试题
第零题:自我介绍,项目介绍,项目亮点难点介绍(如何尽可能的照顾CAP,kafka参数调节,推拉流,数据库表设计,blabla)
第一题:知道句柄吧,解释一下句柄的原理(????)
第二题:Java程序从开始打开句柄到句柄关闭,说一说操作系统做的工作(??????)
第三题:咱们来到简单的:说说HashMap为什么是线程不安全的,(嗯!)
第四题:TCP/IP我知道你肯定会,HTTP报文能给我说一下吗,详细说一下请求报文,以及HTTP和TCP的区别。
第五题:来道简单的数据库问题吧,我知道索引,CRUD什么的你肯定都会,这样你给我说一下怎么实现一个数据库吧(??????)(按照大二写的DBMS的思想说了一下)
第六题:再来一道简单的数据库问题,给我说一下从你打开命令行到发送请求,mysql服务器的整个相应流程吧(?????)(走了一遍流程)
第七题:你说你对并发有了解,聊一聊CAS吧,详细说说CAS的底层设计思想,你能模拟一下锁升级吗?
第八题:进程之间通信的五种方式,及其原理和应用场景
第九题:聊一聊NIO的应用场景吧,如何设计一个聊天室
第十题:聊一聊你的项目吧,如何做的推拉流(调用的腾讯的服务),实时数据传输掉包,是如何解决这个问题的(线程池+定时任务访问消息队列)
第十一题:既然你提到了线程池,我知道线程池你肯定会,能详细给我说说拒绝策略的应用场景吗?
第十二题:场景题目:布式事务的解决方式,2pc,3pc,TCC。
第十三题:详细说说redis为什么使用跳表而不是用红黑树,跳表范围查找效率高
第十四题:Spring的IOC如何实现的,循环依赖注入如何解决的,SpringBoot的自动启动说一下,真就跟我玩底层呗?
昨晚上复盘,再整理两道题目:
一、docker容器是如何实现线程隔离的,(答使用Namespaces实现了系统环境的隔离,使用CGroups限制这个环境的资源使用情况)
二、你知道C++对吧,你肯定知道C++可以使用malloc来进行空间分配,你能不能简单说一下,如何用Java实现连续空间的内存分配呢(答:new byte[size])
总体感觉难度真的好大好阴间。
希望有机会给大家整二面经
0814 铁子们,一面过了,准备二面了
几乎全是场景题 + 算法设计,我一道都没答上
复习了好久的spring源码,一点没问,有没有面试官问问我spring源码啊😢(开玩笑的,问深了就凉
面试官人很好,所有题都跟我说了该怎么做以及为什么要问我
双方调试设备过去10分钟,以下题目不分先后
1. 面试官面试之前跟我说先说几点
1.1 不管面试结果怎么样,都不要有什么想法,只能说现在竞争压力真的很大(这一刻我知道我已经凉了
1.2 面试结果不重要,只要能在面试中学到东西,就是一次很好的经历(大概这个意思哈
1.3 我忘了……
2. 跳表(全篇唯一答出来的题)
我一下子没缓过来,嗯?自我介绍呢?
然后讲了下跳表的层被打住说了解了(没有自我介绍我还没缓过来
3. gc引用计数法的缺点,除了循环引用,说一到两个
想了很多,跨代引用都想了,最后说不出来,提示我可以从【设计gc算法需要考虑什么因素】上来回答,想不出来
他说了可以考虑stw、访问局部性、堆大小(这个没听清楚),然后问我局部访问性知道吗,我以为是jvm里的新知识就说了不知道,然后他解释了一下,我才知道噢原来就是os的局部性原理。。。
然后他问你觉得引用计数***影响到哪几点,面试官看我没反应就说ok,然后跟我解释了,主要是一个链式更新、堆的使用效率的问题,引用计数法优点在于他是实时删除的。
其实到这里我心态已经崩了,只想退出面试间😔
4. 场景题:转账,A转给B,先锁A后锁B,如果双方同时转账会发生什么?答曰死锁。怎么解决?
想到打破死锁循环引用条件,太久没复习os了,所以还是没说上来,答案如下:
给资源编号,必须按编号从小到大的顺序申请资源,一个进程只有已占有小编号的资源时,才有资格申请更大编号的资源。(明明是自己笔记里的东西,实际运用真的不行啊,自我感叹)
5. mmu端口
我说不知道mmu是什么……面试官说是内存管理单元,然后问我内存虚拟地址物理地址映射怎么映射的,我说快表,但是真的没听过mmu,然后他说那大概是你忘了吧,回去可以再看一下书。确实我的os都喂狗了。。。
6. Java类加载模型?(全篇唯二答出来的题)
双亲委派,说了几个类加载器,启动类加载器一下子忘了。
7. 追问不同的类加载器加载同一个类是隔离还是共享
答了隔离,他大概觉得我说的没有底气,就跟我解释了为什么是隔离的(除bug)。
8. 算法设计:问卷发给1w个人,都是20-30岁之间的,怎么最快的按年龄排序?
觉得要用好题目给的关键信息,最后说不出来,还想过双轴快排,因为我面试前还在复习Arrays.sort()的源码。。。,然后他说了实现,就是用一个大小为10的列表数组,遍历一次问卷就可以排好序了。其实我还是很迷惑,我以为他是要1w份全都严格排序,就是先按年龄后按问卷内容。。。
9. 算法设计:4kw个不重复的数,max不超过8kw,找小于max之后的不存在在数组中的4个数,如果内存只有10m怎么找?举例:1,2,3,8,答案是:7,6,5,4
想了想分片,他说不对,最后答案是用位图。我直呼妙啊然后说你太有意思了😂我真的全程就在卖傻你知道吗
10. 下面这个你不一定会但我还是要问问你,行迁移和行链接的区别
我:你说的对
他:这个我问到现在确实没几个人说出来过
11. 场景设计:url存储数据库就算设置了索引也会很慢,应该怎么设计存储?
我有了几种思路,想过切分,想过压缩,想过存md5,但我一个没说。。。最后他说要超时了,直接跟我说正解,我抱着反正要结束了的想法随便说了个切分和压缩的思路,然后面试官说你要是有思路一定要跟我说的啊,不然我不知道你有没有想法不知道怎么引导(对不起我真的交流能力巨差。。。
然后他讲了几种方法,而且是层层优化的:
11.1 存md5(恨自己没胆子说出口
11.2 md5也很长,只存前几个字符的话可能会冲突,所以可以同时存md5的前几个字符和原url,然后where md5 = ‘xxxx’ and url = ‘xxxxx’,让md5走索引。
11.3 自己构建哈希映射
12. 反问
因为知道自己凉了,也就不问个人建议了,问了说对于一个刚开始准备面试的人来说,广度和深度哪个更重要(虽然我是从春招准备到现在,0offer,现在小厂实习,为了拿学校实训学分
他先问了我对他这次面试的看法,我说我自己场景题很差blablabla,然后他说他在我这个时候也不一定比得上我blablabla,但是现在这个行业你也知道的,有时候不是你不够优秀,而是跟你竞争的人太强了,他说他自己这批题确实有难度(他自己亲口说的),但是面试下来也有人答的还不错,也有人没说出来几个(我觉得这是为了安慰我😂)。最后说学习的话可以先广度然后找感兴趣的挖深度,他这些题都是书上的题,然后跟我说了书单,数据库推荐我看《海量数据库设计方案》(而我看的技术内幕),jvm的题是来自JVM设计算法(没听清,反正有个算法,而我看的深入理解)。然后说大家都觉得大学学的课没什么用,其实到工作上来才发现都是要重新捡起来的(就是针对我前面不知道mmu说的吧,其实我之前为了准备字节三面把王道考研都看了,但是没进脑子啊🤣)。
最后重复了刚开始面试的时候说的几个点,让我不要太放在心上,面试能够学到东西那就是有作用的,然后暗示不会影响下一次投递😂最后还是感谢你来参加网易云的面试。
我(点头):辛苦您了。
最后双方互相对着镜头挥手表示告别😂他真的很有意思。
我个人是属于不怎么会交流的性格(人际交往敏感 + 重度话废),不确定自己的想法就一定不会说出口,这次面试基本上当了个只会傻笑的哑巴,吃了很大的亏哈哈
贴一点我朋友的发言,他是我很敬佩的一个人,也是我人生的一个转折点(没有他就没有现在的我,真·人生导师
2020.8.4
阿里云一面
自我介绍
没开录音,问的好多啊,,,大概纯问题有四十分钟不止
Linux的常用命令
进程间通信的方式
C中static的作用——局部变量/全局变量/函数
进程与线程的区别
网络七层模型与五层模型,以及每层的代表性协议
DHCP是什么
ICMP是干什么的
Linux的文件状态/权限
C中virtual关键字
从输入网址到访问中间使用的协议,越详细越好
单链表是否存在环的问题
系统调用有哪些
……
手撕代码
都蛮简单的
第一题给两个unsigned int型的变量x和n,判断x是否是n的幂函数,即是否存在k使得n^k=x
***了相当多的可能,非负、整数,所以实际写起来很简单,但我脑瘫了一开始没能理解意思;后来还写了0<n<1可能的情况,傻掉了
第二题给一个unsigned int型的变量x,判断x是否是2的幂函数
解题思路是利用二进制的特性,如果是2的幂函数,那么二进制串中只有一位是1
2020.8.13
阿里云二面
没自我介绍
问了虚拟内存/页表
链表如何找环
链表和数组的优势和劣势,如何选用
Socket编程——没怎么用过
访问淘宝网址会用到的协议
Tcp三次握手
面试官表示你要是春招我就给你实习机会了,做上几个月也能了解能力,但秋招名额不多,只要最优秀的,所以很难给我机会过……
婉拒.jpg
虽然基本凉了,但还是抱有进入下一面的希望,尽力争取。
攒一攒人品,过段时间回复结果。