
面试
文章平均质量分 61
fesng
优快云年度博客之星和博客专家,毕业长期在一线互联网专注于Android开发以及Android漏洞挖掘研究。
展开
-
反转链表(reverse ListNode)
反转链表:java类public class ListNode{ int key; ListNode next;}思路分析:需要三个指针,current,prev和next。current.next = prev之前需要next = current.next(判断next是否为空),同时一直往后遍历while(node != null) - 代码:public ListN原创 2016-05-09 21:22:43 · 5929 阅读 · 0 评论 -
二叉树的性质
二叉树概述在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。性质概述二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树原创 2016-09-06 11:10:23 · 1893 阅读 · 2 评论 -
Java泛型详解
由于博客的特殊显示原因,尖括号用()代替泛型概述Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。优缺点从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好...原创 2016-09-25 23:43:15 · 5820 阅读 · 1 评论 -
Android的oom详解
Android的oom原因1.资源对象没关闭造成的内存泄露,try catch finally中将资源回收放到finally语句可以有效避免OOM。资源性对象比如:1-1,Cursor 1-2,调用registerReceiver后未调用unregisterReceiver() 1-3,未关闭InputStream/OutputStream 1-4,Bitmap使用后未调用rec...原创 2016-09-11 17:36:44 · 6444 阅读 · 3 评论 -
Android的ANR详解(原因和方案)
ANR的定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示A...原创 2016-09-10 12:50:55 · 3517 阅读 · 0 评论 -
java线程同步详解
synchronized关键字介绍:synchronized锁定的是对象,这个很重要例子:class Sync { public synchronized void test() { System.out.println("test开始.."); try { Thread.sleep(1000...原创 2016-05-27 22:05:02 · 5513 阅读 · 2 评论 -
【22】-快速排序随机选择元素的优雅解法
关于常规解法,请参考上一篇博客,链接如下: 面试之路(19)-快速排序详解介绍一种优雅的解法public int partition(int data[],int length,int start,int end) throws Exception{ if(data == null || length <= 0||start < 0||end >...原创 2016-05-04 23:02:22 · 8441 阅读 · 0 评论 -
【19】-快速排序详解
快速排序定义由C. A. R. Hoare在1962年提出 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给ke...原创 2016-05-01 21:20:32 · 11096 阅读 · 0 评论 -
【17】-冒泡排序详解
冒泡排序定义它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。步骤1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了...原创 2016-05-01 17:19:44 · 11337 阅读 · 1 评论 -
归并排序详解(MergeSort)递归和非递归实现
归并排序的概念及定义归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两原创 2016-05-01 16:58:42 · 9770 阅读 · 0 评论 -
【15】-java实现二分查找
二分查找在面试中经常被遇到,这个方法十分优雅介绍二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2原创 2016-04-30 17:23:15 · 9375 阅读 · 2 评论