8/19 面试刷题

先问自我介绍,说一下你认为的团队合作?

用过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

 

虽然基本凉了,但还是抱有进入下一面的希望,尽力争取。

攒一攒人品,过段时间回复结果。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值