【php精品源码栏目提醒】:以下是网学会员为您推荐的php精品源码-阿里巴巴面试题 - 产品手册,希望本篇文章对您学习有所帮助。
今天中午接到阿里巴巴的电话面试,电面了将近一个小时左右。
感觉自己发挥得并不好,好多基础的只是还是一知半解的, 虽然看过一些东西的源代码但是,很多东西,也只是限看过而且,但是一到用的时候,或者被问到的时候, 却突然失忆…… 这里记录一下今天问到的问题。
给自己长长记性。
PS 凭着记忆来把他问的问题整理一下,并列出来,准备一一理解清楚 最开始的几个问题我现在已经记不清楚了, 估计当时紧张了。
你对 Java 的集合框架了解吗? 能否说说常用的类? 说说 Hashtable 与 HashMap 的区别: 源代码级别的区别呢? ,ArrayList 和 LinkedList 平时用过的 List 有哪些? (除了 ArrayList 和 LinkedList)的区别? ArrayList 的特点,内部容器是如何扩充的? Properties 类的特点? 线程安全平时使用过的框架有哪些? 我提到了 Struts2 请说一下 Struts2 的初始化?和类的创建?从源代码角度出发 据你了解,除了反射还有什么方式可以动态的创建对象?(我提到了 CGLIB…… 我以为他会接着问 CGLIB揪心中……,结果他没问) 请说一下 Struts2 是如何把 Action 交给 Spring 托管的?它是单例的还是多例? 你们页面的表单对象是多例还是单例? 请说一下你们业务层对象是单例还是多例的? 请说一下 Struts2 源代码中有哪些设计模式? 请说一下,你觉得你最熟悉的技术特点? (我提到了并发编程) 请说一下线程安全出现的原因? 请说一下线程池的中断策略4 个? 各有什么特点? 请说一下 Tomcat 配置不同应用的不同端口如何配置? 如何配置数据源? 如何实现动态部署? 请说一下 Java 常用的优化? 你了解最新的 Servlet 规范吗? 简单说一下?(我提到了推) 那请你说一下“推”是如何实现的? 线程安全下,StringBuffer 与 StringBuilder 的区别? 它们是如何扩充内部数组容量的?(源代码) 请说一下 Tomcat 中的设计模式?(我提到观察者模式) ) 是否可以说说 Java 反射的相关优化机制? (我说我不太清楚…… 他说没关系 - -! 请说一些 Mysql 的常用优化策略? 因为我之前有提到过 , “推” 他可能对我的知识面比较感兴趣,要我说说平时都看些什么书,还了解一些什么其他的技术范畴。
(他首先提到 SOA,我说有了解,并且是未来的趋势,还有提到云计算,我说有过一定了解,但是并未深究) 之后是几个职业方面的问题? 你觉得你的潜力? 你在团队中的位置? 你觉得跟团队中最好的还有哪些差距?你要花多少时间赶上他们? “阿里巴巴的牛人平时都跟你们有互动吗? 你对阿里巴巴还有什么疑问吗? (我很囧的问了, ,囧了……)-----本意是指培训,但是话没说清楚……”PS,下面是时候对问题的整理,里面纯粹仅限于个人浅见,如果有错误,还希望各位能指点一二。
你对 Java 的集合框架了解吗? 能否说说常用的类?Java 集合框架类图:我常用的类:HashMapHashtableHashSetArrayListVectorLinkedListCollectionsArrays说说 Hashtable 与 HashMap 的区别源代码级别 而 1.最明显的区别在于 Hashtable 是同步的每个方法都是 synchronized, HashMap则不是. 2.HashMap 继承至 AbstractMapHashtable 继承至 Dictionary 前者为 Map 的骨干,其内部已经实现了 Map 所需 要做的大部分工作, 它的子类只需要实现它的少量方法即可具有 Map 的多项特性。
而后者内部都为抽象方法,需要 它的实现类一一作自己的实现,且该类已过时 3.两者检测是否含有 key 时,hash 算法不一致,HashMap 内部需要将 key 的 hash码重新计算一边再检测,Hashtable 则直接利用 key 本身的 hash 码来做验证。
HashMap:Java 代码1.int hash key null 0 : hashkey.hashCode2.-----3.static int hashint h 4. h h gtgtgt 20 h gtgtgt 125. return h h gtgtgt 7 h gtgtgt 46. int hash key null 0 : hashkey.hashCode-----static int hashint h h h gtgtgt 20 h gtgtgt 12 return h h gtgtgt 7 h gtgtgt 4 Hashtable:Java 代码1.int hash key.hashCodeint hash key.hashCode 4.两者初始化容量大小不一致,HashMap 内部为 160.75 Hashtable 为 110.75HashMap:Java 代码1.static final int DEFAULT_INITIAL_CAPACITY 162.static final float DEFAULT_LOAD_FACTOR 0.75f3.public HashMap 4. this.loadFactor DEFAULT_LOAD_FACTOR5. thresholdintDEFAULT_INITIAL_CAPACITYDEFAULT_LOAD_FACTOR6. table new EntryDEFAULT_INITIAL_CAPACITY7. init8.9.………………………………static final int DEFAULT_INITIAL_CAPACITY 16static final float DEFAULT_LOAD_FACTOR 0.75fpublic HashMap this.loadFactor DEFAULT_LOAD_FACTOR thresholdintDEFAULT_INITIAL_CAPACITYDEFAULT_LOAD_FACTOR table new EntryDEFAULT_INITIAL_CAPACITY init……………………………… Hashtable:Java 代码1.public Hashtable 2. this11 0.75f3.4.-----5. public Hashtableint initialCapacity float loadFactor 6. ..........7. this.loadFactor loadFactor8. table new EntryinitialCapacity9. threshold intinitialCapacity loadFactor10. public Hashtable this11 0.75f----- public Hashtableint initialCapacity float loadFactor .......... this.loadFactor loadFactor table new EntryinitialCapacity threshold intinitialCapacity loadFactor 其实后续的区别应该还有很多, 这里先列出 4 点。
平时除了 ArrayList 和 LinkedList 外,还用过的 List 有哪些?ArrayList 和 LinkedList 的区别? 事实上,我用过的 List 主要就是这 2 个, 另外用过 Vector. ArrayList 和 LinkedList 的区别:1. 毫无疑问,第一点就是两者的内部数据结构不同, ArrayList 内部元素容器是一个Object 的数组, 而 LinkedList 内部实际上一个链表的数据结构,其有一个内部类来表示链表.Java 代码1.ArrayList2.private transient Object elementData3.4.………………………………………………………………………………5.6.LinkedList7.private transient EntryltEgt header new EntryltEgtnull null null/链表头8.9.//内部链表类.10.private static class EntryltEgt 11. E element //数据元素12. EntryltEgt next // 前驱13. EntryltEgt previous//后驱14. EntryE element EntryltEgt next EntryltEgt previous 15. this.element element16. this.next next17. this.previous previous18. 19.ArrayListprivate transient Object elementData………………………………………………………………………………LinkedListprivate transient EntryltEgt header new EntryltEgtnull null null/链表头//内部链表类.private static class EntryltEgt E element //数据元素 EntryltEgt next // 前驱 EntryltEgt previous//后驱 EntryE element EntryltEgt next EntryltEgt previous this.element element this.next next this.previous previous 2.两者的父类不同,也就决定了两者的存储形式不同。
ArrayList 继承于 AbstractList而LinkedList 继承于 AbstractSequentialList. 两者都实现了 List 的骨干结构,只是前者的 ,后者趋向于 “连
上一篇:
深入浅出
下一篇:
年产30000吨味精厂发酵罐的设计与选型