java实现操作系统算法_美团Java三面面经:算法+网络+操作系统+数据库+源码

36a0473e37b759bb17106805c3a93990.png

在上个礼拜面试了美团,时间线间隔2天,可能由于本人不是科班出身,面试的时候概念题比较多,一面的时候还出现了很多智力题,有想要去美团的小伙伴可以按照我这个逻辑进行复习,文末也有复习资料分享!

美团一面:

  • 跳表优点
  • 进城线程区别
  • 统计pv
  • cas
  • mysql索引(为什么使用b+树 innodb的hash)
  • 限流算法 guava的ratelimiter采用哪种
  • 3升杯子和5升杯子求4升的水 多方案
  • 一副扑克牌放在手上 顺序取 一张放桌子上 一张插入手底 最后桌子上的牌为1-k 求原牌顺序
  • 一家965国企 系统出现问题 每三个月挂掉 现已发现是内存泄露导致 让你三天内解决 你会怎么做(项目代码是十年前的那种 难以维护)
  • 求二叉树第n层的节点个数

一面总结:

问的智力题偏多 Java几乎没问 唯一问的cas也只是我刚说完概念 刚准备说juc包就打断了 转为问mysql 最后手撕算法 面试官人很好 会提示


美团二面

看你是通信工程专业 那你学过哪些计算机的课程呢 都是怎么学的

自己看了王道408 然后开始问

1.网络方面

  • osi七层模型
  • tcp udp 区别
  • tcp可靠性怎么实现
  • ip 端口号作用
  • 三次握手四次挥手
  • 数据传输之前为什么要进行三次握手 说说你的理解
  • 滑动窗口 流量控制 拥塞控制
  • http
  • get post
  • cookie session
  • 浏览器输入url
  • 不使用https 能不能想办法保证用户登录的安全性
  • 对称加密 非对称加密

可能看我是非科班 都问的挺简单

2.操作系统

  • 进程线程
  • 进程间通信 线程间通信
  • 线程状态(Java)
  • 多线程适用场景
  • juc
  • nio poll epoll select reactor

3.数据库

  • 锁 死锁
  • 引擎对比
  • 索引
  • 事务 acid 隔离级别 mvvc

4.linux

  • 常规命令 项目部署 端口 进程id那些
  • 服务器出现问题排查

5.LRU实现(linkedList+hashmap)


美团三面

  • 线程池源码
  • hashmap源码
  • 怎么对map实现有序
  • 类加载(给实际场景)
  • innodb索引(给张表画索引) 回表
  • mybatis怎么实现orm 说说自己理解 让你落地怎么去做
  • 继续实现lru 不使用jdk提供的容器(答了双链表和hashmap 让优化 换思路 加一个时间标志 然后利用comparetor排序)
  • 一个规律题 1 11 21 1211 111221
  • 学习方法
  • 对美团的了解
  • 拿到什么offer

每一次面试都是一场修行!加油吧各位!

复习资料分享,小编是个比较爱记录的人,所以经常会把面试的内容记录下来,前段时间为了准备面试也是收集到了很多的面试资料,现在也把他分享出来给有需要的小伙伴们复习使用!

领取方式:关注我后私信回复【面试】即可免费获取到!

1d6ae45204ea88b4c71cc9e3b1c4abe4.png

end:

如果你觉得本文对你有帮助的话,记得关注点赞转发,你的支持就是我更新动力。

如果您有不同的看法,欢迎在评论区留言与我们一起讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、UNIX文件系统的基本原理        UNIX采用树型目录结构,每个目录表称为一个目录文件。一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。本次课程设计是要实现一个简单的模拟UNIX文件系统。我们在磁盘中申请一个二进制文件模拟UNIX内存,依次初始化建立位示图区,I节点区,数据块区。 二、基本要点思路         1、模拟磁盘块的实现:因为文件系统需要从磁盘中读取数据操作数据,在实现时是使用文件来模拟磁盘,一个文件是一块磁盘,在文件中以划分磁盘块那样划分不同的区域,主要有三个区域:位图区,inode索引节点区,磁盘块区。位图区我是使用一个512byte的数组存放,inode区和磁盘块区我采用一种自认为比较巧妙的方法,就是存放对象列表,之前说过,在本次实验的所有的结构都使用对象进行存储,而inode节点和磁盘块就是两个重要的数据结构,在初始化时我实例化32个inode对象和512个block对象(至于这些类的具体定义下面会提到),然后将这些对象加入各自对应的对象列表中,在存储时,使用java的对象序列化技术将这个对象数组存到磁盘中。当使用文件系统时,程序会先从磁盘文件中读取出位图数组,inode对象列表,block对象列表,之后的操作就是通过对这些列表进行修改来实现。使用这种方法可以减小存储的空间(对象序列话技术)而且不需要在使用时进行无用的查找,只要第一次初始化中将这些对象都读取出来。        2、界面的实现:在实现这个文件系统时使用了两种方案,一种是直接在java控制台来进行输入输出,因为原本想着UNIX文件系统原本也是使用的命令行语句,所以在控制台上实现也很接近。后来在老师的建议下又将整个程序重新修改,改成在UI界面上进行输入输出,这样确实界面美观舒服了不少,只不过两者用的技术很不一样,前者主要使用的是系统的输入输出流,后者使用java监听器。        3、权限的实现:在实现多用户的权限方面,我给文件和文件夹各定义了三级权限1、访问:在文件中是可以查看文件的内容,在文件夹中是可以进入该文件夹。2、修改:文件中是可以对文件进行编辑,文件夹中是可以在该文件夹中创建新的文件或目录。3、删除:顾名思义。文件或文件夹的创建者拥有最高级别的权限,只有拥有最高级权限的用户才可以给其他用户针对该文件或文件夹进行授权和授权操作。在每次对文件或文件夹进行访问修改删除操作时都会检查当前用户在该文件或文件夹所拥有的权限,只有拥有的权限大于想要实现的权限时才可以进行该操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值