Mohuishou

每一个不曾起舞的日子都是对生命的辜负。

三面同时进行,每一面间隔不超过五分钟,前面两面技术面最后一面HR,完全不会JAVA,结果一直问JAVA心态爆炸 一面(20min)1. 自我介绍2. JAVA用过么?准备去什么地方?用过一天写了一个小APP 3. JAVA的HashMap怎么实现?PUT一次做了什么操作不会 4. JAVA的GC怎么实现不会,强行说了一波PHP的GC 5. Mysql的锁Innodb支持到行级锁,MyISAM只支持到表 6. 求一个二叉树任意两节点的

Read More...


大疆面试总结

感谢大疆的第一份Offer 一面(1h 40min) 两个面试官问了不同方向的问题 0. 自我介绍1. 详细的介绍了两个项目2. 一道算法题 求n!末尾有多少个0 面试官很好,引导着做的 3. 进程、线程、协程对比4. 协程为什么可以有成千上万个,线程呢5. Ruby什么时候学的,从开始接触到写项目之间用了多久实习的时候初学,用了3天 6. Golang 切片如何删除数据7. Golang 的结构体的组合8. Golang in

Read More...


一面(40min)0. 自我介绍1. 介绍ImageOCR的项目2. 知道有哪些排序算法?冒泡、插入、shell、归并、快排、堆排序、选择排序等等 有没有不会写的,排雷排掉了堆排序 3. 手写插入排序并解释4. 上面的排序算法哪些是稳定的,哪些是不稳定的还有一些忘了二面(1.2h)0. 介绍简历上的另外一个项目1. PHP的基本数据类型以及基本数据类型内核如何实现?基本数据类型12345678boolean(布尔型) 布尔型是最简单

Read More...


堆排序

说明堆积排序: 是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 步骤 建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o(h1)+o(h2)…+o(hlen/2) 其中h表示节点的深度,len/2表示节点的个数,这是一个

Read More...


shell排序

Shell排序说明希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。 步骤 设置间隔(传统间隔为N/2) 插入排序 图片示例 程序示例传统实现12345678910111213141516171819202122//SortInt 传统sh

Read More...


插入排序

插入排序说明插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 步骤 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2~5 图片示例 程序示例(go)123456789101112131415

Read More...


选择排序

https://github.com/mohuishou/go-sort 说明选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。 示例 实现123456789101112131415161718package selection//Sort 选

Read More...


归并排序

说明归并排序:是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 步骤 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针达到序列尾 将另一序列剩下的所有元素直接复制到合并序列尾 效果 示例1

Read More...


快速排序

https://github.com/mohuishou/go-sort 说明快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需

Read More...


冒泡排序

冒泡排序定义冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 步骤: 比较相邻的元素(从后往前)。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。(如果这一步没有出现任何一次交换,那么说

Read More...


虽然还没想好写点什么,但是总觉得这里放句话比较和谐。