Interview Questions
文章平均质量分 72
Mlib
这个作者很懒,什么都没留下…
展开
-
如何生成100个1-100以内的不重复的随机数
这是个经典的面试题目:生成长度为100的数组,插入1-100以内的但均不重复的随机数一、简单实现思路:(1) 把N个数放入Hashtable 或者arrayList 中.(2) 从上面的集合中随机抽取一个数放入int数组中.(3) 把取出的这个数从上面的集合中删除.(4) 循环 (2),(3) 步骤,直到int数组取满为止.这是一种比较简单的实现思路,实现代码如下:import java.util原创 2016-01-22 23:52:53 · 25937 阅读 · 1 评论 -
八大排序算法总结与java实现
原文链接: 八大排序算法总结与java实现 - iTimeTraveler概述因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结,强行学习。首先罗列一下常见的十大排序算法:直接插入排序希尔排序简单选择排序堆排序冒泡排序快速排序归并排序基数排序其中我们讨论的这八大排序算法的实现可以参考我的Github:SortAlgori原创 2017-07-30 15:22:36 · 14819 阅读 · 9 评论 -
【算法】10亿int型数,统计只出现一次的数
题目10亿int整型数,以及一台可用内存为1GB的机器,时间复杂度要求O(n),统计只出现一次的数?分析首先分析多大的内存能够表示10亿的数呢?一个int型占4字节,10亿就是40亿字节(很明显就是4GB),也就是如果完全读入内存需要占用4GB,而题目只给1GB内存,显然不可能将所有数据读入内存。我们先不考虑时间复杂度,仅考虑解决问题。那么接下来的思路一般有两种。位图法:用一个bit位来标识一个i原创 2017-07-14 10:10:23 · 13379 阅读 · 0 评论 -
【算法】反转字符串
前言研究算法能提高我们的编程功底,更好地编写出高效稳健的代码。今天,我们研究的是 — 反转字符串。//输入一个字符串,输出它的倒序字符串input: Hellooutput: olleH解法反转字符串,确实没什么难度,但是我无意间搜索了一下,才发现这么一个看似简单的反转算法实现起来真可谓花样繁多。这里我们尽可能分别总结介绍一下。1、使用字符数组倒序输出最常规的解法,也是最容易想到的一种方法就是原创 2017-08-06 09:35:39 · 3495 阅读 · 0 评论 -
【算法】如何反转一个单链表?如何两两反转?
如何反转单链表?如何使用较少的遍历次数完成单链表的反转?问题一、反转单链表题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下,这里使用的是Java描述:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}思路如何把一个单链表进行原创 2016-02-24 15:03:30 · 4331 阅读 · 0 评论 -
【面试题】Java String常量相等(==)问题
问题以下三个结果分别输出(true or false)?别小看它,很多程序员因为上面问题出过生产bugString s3 = "s";String s4 = "s";System.out.println(s3==s4);---String s5 = "hello";String s6 = "he"+"llo";System.out.println(s5==s6);---Integer原创 2017-06-12 18:37:10 · 1703 阅读 · 1 评论 -
【Java】Integer变量相等(==)比较问题
题目这是关于一段令人疑惑的Java代码:class TestIntegerCache { public static void main(String[] args){ Integer i3 = 100; Integer i4 = 100; System.out.println(i3 == i4); Integer i5 = 100原创 2017-07-11 12:50:47 · 2335 阅读 · 1 评论 -
Java 8系列之重新认识HashMap
本文来自美团点评技术团队: Java 8系列之重新认识HashMap摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Jav转载 2017-06-12 18:53:15 · 511 阅读 · 0 评论 -
Google 面试题 | 判断字符串是否可由重复子字符串组成
题目描述对于一个非空字符串,判断其是否可由一个子字符串重复多次组成。字符串只包含小写字母且长度不超过10000。样例1 输入: “abab” 输出: True 样例解释: 输入可由”ab”重复两次组成 样例 2 输入: “aba” 输出: False 样例 3 输入: “abcabcabcabc” 输出: True 样例解释:输入可由”a转载 2017-05-05 14:39:29 · 6853 阅读 · 9 评论 -
“二分查找”算法的时间复杂度
算法的时间复杂度无非就是for、while等包含起来的基本运算单元的循环次数1、二分查找二分查找(binary search),也称作折半查找(half-interval search),每次划分一半进行下一步搜索,所以时间复杂度无非就是while循环的次数!//二分查找 Java 实现public static int binarySearch(Integer[] srcArray, int d原创 2016-04-06 14:03:03 · 91664 阅读 · 4 评论 -
【Java】HashMap 和 HashTable 的区别到底是什么?
第一、继承不同第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。public class HashMap<K, V> extends AbstractMap<K, V> implements Cloneable, Serializable {...}public class Hashtable<K, V>原创 2015-11-10 18:02:23 · 28580 阅读 · 2 评论 -
【面试题】N级台阶(比如100级),每次可走1步或者2步,求总共有多少种走法?
走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步、2步或者3步,问走完这100级台阶总共有多少种走法?一、 题目分析这个问题本质上是斐波那契数列,假设只有一个台阶,那么只有一种跳法,那就是一次跳一级,f(1)=1;如果有两个台阶,那么有两种跳法,第一种跳法是一次跳一级,第二种跳法是一次跳两级,f(2)=2。如果有大于2级的n级原创 2016-01-05 15:31:10 · 58584 阅读 · 12 评论 -
Java访问权限修饰符的区别
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符原创 2016-01-15 15:07:58 · 15525 阅读 · 2 评论 -
CPU Cache与缓存行
引言先看下面这两个循环遍历哪个快?int[][] array = new int[64 * 1024][1024];// 横向遍历for(int i = 0; i &lt; 64 * 1024; i ++) for(int j = 0; j &lt; 1024; j ++) array[i][j] ++;// 纵向遍历for(int i = ...原创 2018-09-14 16:13:06 · 12660 阅读 · 8 评论