随笔分类 -  面试

摘要:1 static(静态)变量有什么作用3个体明显的作用:1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态变量在一个函数被调用的过程中其值维持不变2)在模块内,它的作用域范围是有限制的,即如果一个变量被声明为静态的,那么该变量可以被模块内所有函数访问,但不能被模块外其他函数访问。3)内部函... 阅读全文
posted @ 2015-03-25 23:37 Jessica程序猿 阅读(6768) 评论(0) 推荐(0)
摘要:1、台阶问题题目:一个人上台阶可以一次上一个或两个,问这个人上n层的台阶,一共有多少种走法。本题可以采用递归的方法来设计模型,先从数字的规律入手:假设共有i阶台阶,走完所有的台阶有n种走法,则存在如表6- 3所示。表6-3组合情况in组合情况11{1}22{1, 1}{2}33{1, 1, 1}{1... 阅读全文
posted @ 2015-03-25 12:17 Jessica程序猿 阅读(1363) 评论(0) 推荐(0)
摘要:自从做完leetcode上的三道关于二分查找的题后,我觉得它是比链表找环还恶心的题,首先能写出bugfree代码的人就不多,而且可以有各种变形,适合面试的时候不断挑战面试者,一个程序猿写代码解决问题的能力都能在这个过程中考察出来。在有序数组中寻找等于target的数的下标,没有的情况返回应该插入的下... 阅读全文
posted @ 2015-03-24 19:52 Jessica程序猿 阅读(920) 评论(0) 推荐(1)
摘要:18.9 随机生成一些数字并传入某个方法。编写一个程序,每当收到新字符数字时,找出并记录中位数。类似:设计一个数据结构,包括两个函数,插入数据和获得中位数解法:一种解法是使用两个优先级堆:一个大根堆,存放小于中位数的值,以及一个小根堆存放大于中位数的值。这会将所有元素大致分为两半,中间的两个元素位于... 阅读全文
posted @ 2015-03-24 16:30 Jessica程序猿 阅读(239) 评论(0) 推荐(0)
摘要:18.7 给定一组单词,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。解法:原题给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词。例如,字段为{hello,world},字符串为hellohelloworld,则可以拆分为hello,hello,world,... 阅读全文
posted @ 2015-03-24 15:48 Jessica程序猿 阅读(288) 评论(0) 推荐(0)
摘要:18.2 编写一个方法,洗一副牌。要求做到完美洗牌,换言之,这幅牌52!种排列组合出现的概率相同。假设给定一个完美的随机发生器。解法:假定有个数组,含有n个元素,类似如下:[1][2][3][4][5]利用简单构造法,我们不妨先问自己,假定有个方法shuffle(...)对n-1个元素有效,我们可以... 阅读全文
posted @ 2015-03-24 09:25 Jessica程序猿 阅读(276) 评论(0) 推荐(0)
摘要:1 TCP拥塞窗口的作用?慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK, 拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启... 阅读全文
posted @ 2015-03-23 19:50 Jessica程序猿 阅读(285) 评论(0) 推荐(0)
摘要:一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。... 阅读全文
posted @ 2015-03-23 17:23 Jessica程序猿 阅读(537) 评论(0) 推荐(0)
摘要:转载:http://www.kerneltravel.net/journal/v/mem.htmLinux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存... 阅读全文
posted @ 2015-03-23 16:39 Jessica程序猿 阅读(1672) 评论(0) 推荐(1)
摘要:解决方案需要熟练掌握一些常见的位操作实现,具体为:1)常用的等式:-n=~(n-1)=~n+12)获取整数n的二进制中最后一个1:n&(-n)或者n&~(n-1)如:n=010100,则-n=101100,n&(-n)=0001003)去掉整数n的二进制中最后一个1:n&(n-1),如:n=0101... 阅读全文
posted @ 2015-03-23 11:43 Jessica程序猿 阅读(1181) 评论(0) 推荐(0)
摘要:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。bool IsPossiblePopOrder(... 阅读全文
posted @ 2015-03-21 19:33 Jessica程序猿 阅读(285) 评论(0) 推荐(0)
摘要:前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元... 阅读全文
posted @ 2015-03-20 09:44 Jessica程序猿 阅读(1498) 评论(0) 推荐(0)
摘要:select、poll和epoll的区别在linux没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱的火热之年代,select和poll的用武之地越来越有限了,风头已经被epoll占尽。select(... 阅读全文
posted @ 2015-03-19 10:45 Jessica程序猿 阅读(1476) 评论(0) 推荐(1)
摘要:参考:http://www.ahathinking.com/archives/124.html最长公共子序列1、动态规划解决过程1)描述一个最长公共子序列 如果序列比较短,可以采用蛮力法枚举出X的所有子序列,然后检查是否是Y的子序列,并记录所发现的最长子序列。如果序列比较长,这种方法需要指数级时间... 阅读全文
posted @ 2015-03-18 22:41 Jessica程序猿 阅读(1030) 评论(0) 推荐(0)
摘要:链表问题在面试过程中也是很重要也很基础的一部分,链表本身很灵活,很考查编程功底,所以是很值得考的地方。我将复习过程中觉得比较好的链表问题整理了下。下面是本文所要用到链表节点的定义:struct Node{ int data; Node* next;};1. 在O(1)时间删除链表节点题目... 阅读全文
posted @ 2015-03-17 22:39 Jessica程序猿 阅读(483) 评论(0) 推荐(0)
摘要:排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插... 阅读全文
posted @ 2015-03-17 21:51 Jessica程序猿 阅读(707) 评论(0) 推荐(0)
摘要:死锁的条件互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当某个进程已获... 阅读全文
posted @ 2015-03-17 19:13 Jessica程序猿 阅读(14406) 评论(0) 推荐(0)
摘要:题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中... 阅读全文
posted @ 2015-03-16 20:34 Jessica程序猿 阅读(1734) 评论(0) 推荐(0)
摘要:1strcpy为什么strcpy要有返回值?返回strDest的原始值使函数能够支持链式表达式,增加了函数的“附加值”。同样功能的函数,如果能合理地提高的可用性,自然就更加理想。链式表达式的形式如:intiLength=strlen(strcpy(strA,strB));又如:char*strA=s... 阅读全文
posted @ 2015-03-16 11:38 Jessica程序猿 阅读(324) 评论(0) 推荐(0)
摘要:我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的... 阅读全文
posted @ 2015-03-15 14:52 Jessica程序猿 阅读(16401) 评论(3) 推荐(3)