面试那些不为人知的(套路)

面试那些不为人知的套路 

      1.0  相信大家在技术方面找工作  比如java或者C#  或者IOS 面试 通过会有一份基础笔试给到大家 ,我相信大家决定不陌生 。

      2.0  我个人觉得面试回答问题 不是在做填空题和选择题 更像一种沟通,交流  也许自己不一定能胜任这家公司职位 但是你能从他(面试官)当中 受益匪浅 能知道自己很多地方不足

      3.0  要引导面试官往你自己会的题目上问问题,切忌就问题回答问题 

      4.0 首选要分析问题 然后提出你的想法和解决方案

   比如 

      单列模式 哪一种实现效率高 ? 

         错误的回答  静态内部类延迟加载 效率高 ,或者 DCL 效率高

   正确的回答 单列模式有很多种实现方式,

         1.0 第一种是直接new 一个单列做为类的static 成员,这种方式的好处是简单,没有线程安全问题,

        缺点是无论单列是否被使用到 都要实例化 如果没有使用到就会浪费资源了。

     我们一开始就说了,面试不是让你做选择题,对于这个问题来说,

   你应该去分析有多少种实现方式,然后说明每一种的优缺点,答案自然而然就出来了

 

   什么是AOP?Spring中为啥要引入AOP或者AOP有什么好处?

错误的回答:AOP就是面向切面编程。引入AOP可以提高代码的可读性和可维护性。

正确的回答:AOP简单了说就是在目标方法执行前可以自定义一些操作,在方法执行中或者执行后也可以自定义操作,

所以,一般都是基于代理模式来实现,Spring支持两种代理模式,jdk原生的代理和cglib代理 (建议在说一下jdk 代理的优势和cglib代理的优势和他们的缺点)。

AOP可以给程序带良好的扩展性和封装性,可以实现业务代码与非业务代码的隔离。比如:可以在不改变目标代码的前提下,实现目标方法的增强,比如做方法执行时间监控,记录方法访问日志,再比如:数据库的connection.close()默认是把连接关闭掉,但是数据库连接池的场景中,为了不改变用户的使用习惯,一般调用close的时候是把连接重新放回到池中,这是因为从数据库连接池中拿到的连接实际上是原生连接的一个代理类,所以内部把close给重写了。实际上代理模式的优点实际上也是AOP的优点。

解析:面向切面编程是什么鬼?单纯的解释字面意思没有任何意义!你得分析通过问这个问题的他想考察你什么,我们这么回答首先说出了AOP的实现方式,还说了如何使用,还说了代理模式。面试官很有可能会接着问:那你说说JDK的代理和Cglib代理有啥区别?或者会问:除了代理模式,你还知道哪些设计模式?成功引出新的话题。这就是我们一开始说的,要引导面试官问你会的话题。

比如如下一个列子 

问:秒杀的场景下,如何解决库存超卖问题?

错误的回答:通过加分布式锁,通过数据库的乐观锁。。。

正确的回答:秒杀场景下,并发会特别的大,有两种情况会导致库存卖超:

(1)一个用户同时发出了多个请求,如果库存足够,没加限制,用户就可以下多个订单。

(2)减库存的SQL上没有加库存数量的判断,并发的时候也会导致把库存减成负数。

对于(1)前端加验证码,防止合法用户快速点鼠标同时发出多个请求,在后端的miaosha_order表中,对user_id和goods_id加唯一索引,确保就算是刷接口一个用户对一个商品绝对不会生成两个订单。

对于(2)需要在扣减库存的SQL上加上库存数量的判断,只有扣减库存成功才可以生成订单:

要学习自信、树立自信、敢于自信;使生命的过程更精彩!

我给大家一个建议

1.0 每天晚上下班回家保持2个小时看技术书籍时间

2.0  多看一些大牛的博客 多关注一下大牛的微信公众号 列如 小马哥 乃乃 周哥(周立)

3.0  随时关注一些新技术

你可能感兴趣的:(面试)