发布于 

诺瓦星云一面

09.07 诺瓦星云一面

  1. 自我介绍;

  2. 选一个项目介绍一下;

  3. 项目中用户模块是怎么设计的?

  4. 项目是怎么鉴权的?

  5. 用户用了token之后能访问所有功能吗?

  6. 说说面向对象的特征;

  7. 面向对象的七大原则;

    这里确实忘了,只记得一个开闭原则。

    1. 单一职责原则:一个类只负责一个功能领域中的对应职责;
    2. 开闭原则:软件实体应对扩展开放,修改关闭;
    3. 里氏替换原则:所以引用基类(父类)的地方能够透明地使用其子类对象;
    4. 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象;
    5. 接口隔离原则:使用多个专门的接口,而不使用单一的总接口;
    6. 合成复用原则:尽量使用对象组合,而不是继承来达到复用的目的;
    7. 迪米特法则:软件实体应尽可能少地与其他实体发生相互作用。
  8. 构造方法可以重载和重写吗?

  9. 项目里用到了什么数据结构?具体怎么用的?

  10. 项目里的延迟队列是怎么用的?

  11. Socket了解吗?项目里有用到吗?

  12. 说说输入一个网址到页面出现这个过程中经历过什么?

  13. MAC地址是什么?和IP地址有什么区别?

  14. 项目有用到多线程吗?

  15. 线程通信的方式有哪些?进程呢?

  16. 你刚刚提到volatile关键字,那你解释一下volatile的作用和原理

  17. 如果项目出现偶现问题该怎么定位?怎么解决?

    压根不知道偶现问题是啥,没听过,就说可以通过日志和记录来解决。

    后面下来查了一下:

    尝试,尝试,尝试去在一种可控的方式下重现这个 bug。如果你不能重现它,用日志系统给它设置一个圈套,来在你需要的时候,在它真的发生的时候,记录你猜想的,需要的东西。重新设计这个圈套,如果这个bug只发生在产品中,且不在你的猜想中的话,这可能是一个漫长的过程。你从日志中得到的(信息)可能不能提供解决方案,但可能给你足够的信息去优化这个日志。优化后的日志系统可能花很长时间才能被放入产品中使用。然后,你必须等待 bug 重新出现以获得更多的信息。这个循环可能会继续好几次。

  18. 反问环节。


本站由 Cccccpg 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。