网易一面实习面经(2.24)

网易一面(2021年2月24日下午两点)

体验

面试难度还行,问的大多数比较偏基础,没那么多八股文,注重实践应用,更多的是给一些特定的场景和你讨论你的解决方案和会遇到的问题

面试官人挺好的,整个过程挺耐心听我讲并且还会和我一起分析,一次很有收获的面试经历。

记住的都写在下面了

面试时长:52分钟

面试方式:视频

面试部门:网易新闻

  1. 自我介绍

    我是XXX,是一名来自双非XXXX大学啥也不会的学生…

  2. 项目,大约半小时,下面的问题也是聊项目过程中问的一些问题

  3. 在项目上线后的某一高峰期,大量用户同时访问系统产生的高并发问题,你们怎么做预防处理的?

    问的有点突然…没做啥准备

    网关层:流量限流,设置系统接受的最大请求数,其余全部打回

    中间层:根据特定业务需求使用Redis作缓存,吃掉部分请求

    持久层:数据库MySQL主从复制,读写分离,负载均衡,分库分表等

  4. 在做项目过程中,有没有遇到什么数据库问题?怎么解决的?排查Bug的流程能说说嘛

    em…说太多了…如实的回答了记得在写项目时出现过的一个小问题,但是排查了很久的Bug。最后查出来的问题是数据库一个字段的存储大小设小了

  5. 在你项目中,为什么要使用Redis呢?具体在哪些业务场景使用了?

    Redis是C语言开发的一个开源的高性能键值对(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。可以用作数据库、缓存、消息中间件等

    Redis作为一个内存数据库,性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS;支持丰富的数据结构类型;线程安全,单进程单线程,采用IO多路复用机制;支持数据持久化,可以将内存中数据保存在磁盘中,重启时加载;主从复制,哨兵,高可用;可以作为消息中间件使用,支持发布、订阅消息系统

  6. 在实际项目中,使用Redis作为缓存会遇到什么问题呢?

    缓存和数据库数据一致性问题:分布式环境下容易出现缓存和数据库间数据一致性问题。

    如果项目业务要求数据强一致性的,那么就不要使用缓存。只能采取合适的策略来降低缓存和数据库间数据不一致的概率,无法保证强一致性。合适的策略有缓存更新策略,更新数据库后及时更新缓存、缓存失败时增加重试机制

  7. 说一说Redis支持的数据类型吧

    字符串、哈希、列表、集合、有序集合

    可以简单介绍下并且说说常见的具体应用场景

  8. 扔了一个场景题,好像是关于排行榜,具体题目有点忘了

    我说的是使用有序集合zset这一类型。然后补充说了zset的特性和数据结构。然后他问了具体实现命令…我说忘了

  9. 算法题,不难,思路秒了,实现过程有点小插曲

    太紧张,脑子瓦特了。

    C++写算法写多了,Java字符串截取方法我整错了,过了五分钟才想起来hhh

  10. (因为字符串String我答的有点不顺畅,因此继续问)了解StringBuffer和StringBuilder嘛?说说它们之间有什么区别吧

    • 可变

      String类中使用final关键字修饰字符数组来保存字符串,所以String对象是不可变的。而StringBuilder与StringBuffer都继承AbstractStringBuilder类,查看源码可知,底层也是使用字符数组实现的,但是没有使用final关键字修饰,因此这俩都是可变的

    • 线程安全

      String中的对象是不可变的,也就是可以理解为常量:线程安全

      StringBuffer对方法都加了同步锁或者对调用方法加了同步锁,所以是线程安全的;而StringBuiler没有对方法进行加同步锁,所以线程不安全

    • 性能

      每次对String类型进行改变的时候,都需要生成一个新的String对象,然后将指针指向新的String对象。StringBuffer每次都会对对象本身操作,而不是生成新的对象并改变对象引用。同等情况下使用StringBuilder要优于StringBuffer性能

    总结:

    1. 操作少量数据:String
    2. 单线程操作字符串缓冲区下操作大量数据:StringBuilder
    3. 多线程操作字符串缓冲区下操作大量数据:StringBuffer

    中间问了一些Spring、SpringMVC、SpringBoot,具体有点忘了,答的也不是很好,没多问

  11. 我们来聊聊,Java集合吧,你了解HashMap嘛?说说它的原理

  12. 扩容机制?

  13. 在高并发环境下,是线程安全的嘛?若线程不安全,那会有什么问题嘛?

  14. 如何保证HashMap线程安全?

  15. 你能说说什么是线程安全,什么是线程不安全嘛?(没答好)

当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的

  1. 数据库应该怎样设计?

    被为难的操作…

  2. MySQL索引?索引失效?

反问:

  1. 您觉得我有什么需要注意的地方或者更好的建议?

  2. 什么时候有面试结果?

    后续操作,这几天保持电话畅通,等HR电话通知

感触

总的来说,大部分时间都在聊项目,充分的准备好项目还是很有必要的。很意外,没有问JVM/GC、计网(正好还没看)、多线程也只问了基础…问的项目中牵扯到的技术和基础更多一些,或许是我太菜哈哈哈

这是准备这么久以来第一次面试,不管过不过,保持乐观,继续向前走,加油早日拿Offer!!!

你可能感兴趣的:(面试经历,java,面试)