记得大学时老师说,成功的经历叫经验,失败的经历叫教训。 想来我好像应该换个题目。2019年4月7日晚8点,面试官按时打来了电话,人很好很礼貌。
1.自我介绍。
2.Java SE:讲一讲反射,你什么时候会用到反射。 讲了Class.forName();动态加载字节码文件得到得到一个对象, 比如在JDBC加载驱动时会用到。
3.说说Java的GC(垃圾回收机制)。 忘了,就提了finalize()方法和内存泄漏。
4.你了解Spring框架吗?说说特点。 答了IOC、AOP、DI。 原来用new实例化对象或者工厂模式实例化对象,耦合比较高,IOC设计模式将对象的实例化交给容器(比如Spring)来完成,降低耦合。实现的方式是applicationContext.xml里新建一个bean标签,再 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");拿到对象。 AOP动态增强切点方法(三种Advice增强)。
5.看过Spring源码吗?讲讲用到的设计模式。 就说了工厂,什么适配器、装饰者、观察者、单例话到嘴边没敢说。
6.数据结构
(1)说说常见排序算法的时间复杂度,较好的空间复杂度的算法是哪个? 说说希尔排序的原理,冒泡排序的原理。
(2)Q:如果后台返回多个对象,怎么比较它们之间的属性是否一致? A:一开始想到的是重写父类Object的equals()方法 Q:那如果你在前端只能看到返回的对象无法操作后台呢? A:不太清楚。
7.假如天猫的数据量比较大,如何优化?使用Mysql索引行不行? 说了缓存,比如Hibernate的一级缓存、延迟加载(虽然我知道他们早不用了...)、redis 说了合理化查询语句,优化表结构。
8.如何判断一个字符串是否是数字?回答直接Integer.parseInt()报错就不是数字,后来想想回答:Byte[]b=str.getBytes();循环判断大于0小于9再String str=new String(b);考官说万一是float或者double呢?想了想回答Math.floor()再比较最后想的是:遍历串出现多于一个的.和非数字。
9.说说项目中最难忘的点。
10.如何测试一个闹钟app。
11.笔试算法判断字符串重复、计算字符串出现的次数,判断字符是否为数字。
总体来看,阿里的一面不算难,但广度很大,可能问的都答得很浅人家也不往下问了,得好好夯实基础。
...查看更多