字节跳动+京东+360+网易+腾讯踩过的坑
第一个:字节跳动
一面:已知二叉树BT各结点的先序、中序遍历列分别为A、B、C、D、E、F和C、B、A、E、D、F,试画出该二叉树。
**二面:**已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自
左到右输入),试写出构造此树的孩子-兄弟链表的算法。
**三面主管面:**已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建
立该二叉树的二叉链表。
**四面交叉面:**试编写递归算法,输出广义表中所有原子项及其所在层次。
第二个:京东
一面:哈希HashMap的底层实现
二面:那为什么当链表长度大于阈值8时才会选择使用红黑树呢?
三面:请你说明HashMap和Hashtable的区别?
第三个:360
一面:线程和进程的区别?
二面:万亿级别的两个 URL 文件 A 和 B,如何求出 A 和 B 的差集 C,(Bit 映射->hash 分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
三面:5 枚硬币,2 正 3 反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同;
四面:如何从一百万个数里面找到最小的一百个数,考虑算法的时间复杂度和空间复杂度
第四个:网易
一面:1.并发集合了解哪些?2.HashMap的实现原理
二面:列举java的集合以及集合之间的继承关系
三面:容器类介绍以及之间的区别
四面:ArrayMap和HashMap的对比
第五个:腾讯
一面:HashTable实现原理
二面:hashMap如何扩容
三面:1.请列举出在 JDK 中几个常用的设计模式?2.什么是设计模式?你是否在你的代码里面使用过任何设计模式?
四面:举例说明什么情况下会更倾向于使用抽象类而不是接口?
总结
现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。
我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。
Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。但是周末花一天时间体验一下它的开发流程,了解一下它的优缺点、能干什么或者不能干什么。这个时间,并不是我们不能接受的。
如果有时间,其实通读一遍 Flutter 的文档,是最全面的一次对 Flutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。
(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)
**本文已被[CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](
)
收录**
最后自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此也是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
|