面试

来源:互联网 发布:淘宝上兼职是真的吗 编辑:程序博客网 时间:2024/05/22 10:39

其实对于这次面试我有准备一些的,但是等到了现场的时候,发现自己或许对于基础的东西或许真的需要好好反思和记录了,不能有了实际经验之后却被一些面试经给打倒了。

你有用过设计模式吗?

设计模式,  单例,工厂,建造者,组合。(常用的)

说说单例模式的处理的问题?

--当时说了些单例就是只生成一个对象什么的。

http://www.runoob.com/design-pattern/singleton-pattern.html

  • 多线程的使用场景?
  • 跑定时任务的时候加快处理速度。(异步处理任务。当时没有说,感觉这个也不重要啊,谁都知道线程可以异步处理的。
  • 线程安全集合类?
  • HashTable,ConcurrentMap,Vector 这几个.
  • serlvet是单例模式吗,spring servlet是单例模式吗?
  • 我居然傻bb的说都不是。(心想因为是多线程的)。
  • 单例模式 主要解决:一个全局使用的类频繁地创建与销毁。
  • http://www.cnblogs.com/yjhrem/articles/3160864.html(解释serlvet为什么是单例多线程)
  • https://zhidao.baidu.com/question/395453737329957205.html(解释为什么spring是单例).
  • 线程池的好处?
  • 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,
  • 每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,
  • 甚至可能要比花在处理实际的用户请求的时间和资源要多得多。除了创建和销毁线程的开销之外,
  • 活动的线程也需要消耗系统资源。如果在一个JVM里创建太多的线程,
  • 可能会导致系统由于过度消耗内存或“切换过度”而导致系统资源不足。
  • 为了防止资源不足,服务器应用程序需要一些办法来限制任何给定时刻处理的请求数目,
  • 尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,
  • 尽量利用已有对象来进行服务,这就是“池化资源”技术产生的原因。
  • 数据库范式?
  • 我说学过但是不记得了,但是用实际情况分析了下,面试官觉得还可以。(下面抄自百度百科)
  • https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%8C%83%E5%BC%8F/7309898?fr=aladdin
  • 最后谈谈自己所做项目的优化经历。
  • 之前公司所做项目刚刚去的时候发现一些for循环里面查询数据库的做法,实践证明for循环查询数据库是非常消耗性能的。因为每次查询数据库都需要
  • 尝试连接数据库和释放连接,而活跃连接数据又是有限的,不能及时释放是会占用资源的。甚至从tcp握手机制来说,也是无辜消耗一些资源的。于是我们
  • 做了一些改进,一次性查询所有的数据然后再meger一下。 数据库表类型和数据库锁机制,explain查看sql性能,性能优化。日志埋点以及日志分析。gc分析
  • 以及gc原理。数据库读写分离,数据库分库分表。调用链过长和解耦 (解耦就是异步去运行一些程序,或者使用消息中间组件来解决,redis队列也是可以得)。

生活还要继续啊,我得继续看书了,好多实现原理都不知道,感觉空虚而落寞。
可能我还是感觉偏实践一点比较好,许多东西,可能你永远也用不到,但是有些你可能马上就需要解决。多学习,多和别人交流你就会收获的。

最近一定要攻克uml建模,并且使用powerdesign 实现。说一千道一万不如实践设计一个好的程序。

原创粉丝点击