抖音Android(Java)研发实习一面面经20190402

惯例自我介绍,项目介绍

1.平时通过哪些方式学习

读书和看源码多一些,Java周边的书籍读的比较多。还看一些博客和资料。平时会利用碎片时间看一些技术号发布的文章。最近在看Spring的源码。

2.看过哪些书

《Java编程思想》,《深入理解Java虚拟机》,《Java8实战》,《并发编程的艺术》,《高性能Mysql》,《设计模式》。其他书也有看,但只是挑了一部分去看的,没有完全看完。

3.看过《Java编程思想》吧,那你能说说枚举吗

我认为,枚举其实一个特殊的类,在字节码层面上它只是加了特殊标记的类。只是这个类只能被实例化指定的次数。(枚举这一块都忘得差不多了)

4.枚举比起一般的常量有什么不同

枚举内部可以封装特定的值,常量只有一个值。

5.枚举的实例化是存放在JVM内存的哪一块

枚举是用new关键字创建的实例,因此是存放在堆上的

6.你用过枚举吗?哪些场景用到了

和switch关键字配合使用过,其他地方没用过

7.你还能说一个编程思想书中的经典例子吗

额。。。。突然一下还真想不起来了(面试官也笑了2333)

8.那么来说说内部类吧,内部类为什么能访问外部类的变量呢?

内部类在初始化时会得到一个指向外部类的引用,他在使用外部类变量时都是通过这个引用取值的。

9.那我写一段代码,你看看这段代码有没有问题

(考察的点就是内部类使用局部变量)

您在内部类中使用了方法中的局部变量,没有把局部变量用final关键字修饰,并且在内部类中对它进行了修改。

10.为什么要加final关键字呢

这要从局部变量的生命周期开始说,一般局部变量如果没有发生引用逃逸都会在栈上分配空间。当方法运行完毕时,方法对应的栈帧出栈,这时候该方法局部变量分配的空间都会被释放。但是如果我们在方法中创建了内部类的话,在方法栈帧被销毁时内部类可能依然存活。这样如果内部类如果引用了方法的局部变量就会导致该变量的值“突然消失”。因此Java团队为了解决这个问题,就规定如果方法中创建的内部类使用了局部变量时就在构造函数中悄悄传入这个变量的副本,这样这个变量的值就不会因为方法栈帧出栈而消失了。但这样也带来一个问题就是在开发者眼中局部变量和内部类中使用的变量应该是共享一块区域,但是事实是他们是两个内存区域,内部类对该变量的修改并不能影响到方法中的局部变量,这就导致了歧义。于是Java团队规定内部类使用的局部变量都用final关键字修饰,这样两边就都无法修改它了,用这样强硬的方法避免歧义。

在Java7之后局部变量可以不用final关键字修饰了,但这是一个语法糖,我们依然不可以在内部类中对这个变量进行修改。

11.来写个题吧,实现一个栈,当然不能用栈实现

(其实面试官只是想要我用LinkedList做一个栈出来就好,我以为必须要用其他其他容器实现,想到之前做过一个题是用两个队列实现栈。。。。于是就这样写了。这个题很简单,大家应该都能想出来的,代码我就不贴了)

12.Spring中非常重要的IOC思想你了解吗

ioc的意思是依赖倒置,在使用Spring之前,我通常在对象A中用new关键字创建B对象实例,并赋值给引用变量。这样的写法表示对象A依赖B对象,增加了耦合度,B对象实例的创建写死在了A对象中,以后想要改变时只能重写源代码。ioc思想就是对A依赖B进行一个导致,由B给出它自己的依赖,然后再给到A。

Spring实现ioc的方式是DI依赖注入,在Spring启动时初始化一个IOC容器,在容器中放着所有在配置文件中记录的对象的依赖,然后需要依赖的对象只需要向IOC容器索要即可,Spring通过加入了第三方的容器对依赖问题进行了松耦合操作。

13.Spring中的AOP是怎么实现的

AOP是一种面向切面编程的思想,最早由AOP联盟提出,Spring对它进行了实现。具体是通过动态代理实现的,在内存中创建一个目标对象的代理对象,在需要加强的方法的前后进行一个逻辑增强,也就是织入具体的增强代码,比如日志处理代码。调用目标对象实际上得到了它的代理对象,运行的也是代理对象中逻辑增强的方法。Spring通过这样的方式把业务代码和系统代码进行解耦。

14.你有什么想问我的吗

我:如果我能有幸得到这次实习机会的话,我将负责那一块的工作呢?现在到实习还有3个月,我需要准备哪些知识与技能?

面试官:工作的话我们这一块负责抖音的开发,等你来了看谁带你吧。知识与技能你可以看看Android这方面的知识,自己做个小APP试试手。

我:谢谢您,还想请您对我的面试做个点评,给我一些改进与学习的建议

面试官:挺好的,你可以多看看Java的源码,比如栈的源码,JDK的实现其实很简单(我。。。。)。

 

小结

这次面试还不错,我这次面试的Android岗位,但是通篇问的都是Java知识,面试官人很Nice。就是最后那个题有点迷,没有理解清楚面试官的意思,下次有问题应该问问他的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值