程序员面试
文章平均质量分 78
cc198877
这个作者很懒,什么都没留下…
展开
-
static作用:静态变量的生存周期和作用域
首先要理解生存周期与作用域的区别:生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。作用域: 变量的可见代码域(块作用域,函数作用域,类作用域,程序全局作用域)。static变量是指静态的变量,不管是在全局还是局部声明的static变量原创 2013-04-24 15:31:57 · 11272 阅读 · 0 评论 -
C++ sizeof 操作符的用法总结
在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。A.参数为数据类型或者为一般变量:例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。B.参数为数组或原创 2013-06-17 16:23:08 · 930 阅读 · 0 评论 -
C++ 自定义结构体和类 内存对齐
为什么要提出内存对齐?比如这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次读出或写入8个字节的数据,假如软件能保证double类型的数据都从8倍数地址开始,那么读或写一个double类型数据就只需要一次内存操作。否则,我们就可能需要两次内存操作才能完成这个动作,因为数据或许恰好横跨在两个符合对齐要求的8字节内存块上。(在有谢处理器上内存不对齐的话可能会出现错误)一些例转载 2013-06-17 16:21:33 · 970 阅读 · 0 评论 -
经典排序算法综述 持续更新中
(如果对排序方法一点不清楚,可以先将步骤和每个方法下面的示例链接结合起来看更清楚,另外代码如有问题欢迎大家指正~) 直接/简单选择排序 Selection Sort步骤:1. 从未排序的数列中挑出最小元素,存放到排序数列的起始位置;2. 从剩余未排序数列中继续寻找最小元素,然后添至排序数列末尾;3. 以此类推,直到所有元素均添至排序数列。 void sw原创 2013-05-12 20:20:05 · 1145 阅读 · 0 评论 -
海量数据处理问题 解决方法总结
一、分而治之/Hash映射 + Hash统计 + 堆/快速/归并排序分而治之:通过hash将大文件分为小文件,大数据分为小数据等;hash统计:整合每个小文件,筛选重复数据,记录大小; (可用到map / hash_map / set / hash_set等)归并:整合每个小文件的hash统计结果,得到最终结果。寻找热门查询,300万个查询字符串中统计最热门的10个查询原创 2013-08-28 14:40:32 · 1402 阅读 · 0 评论 -
C++ Placement New
先看一个题目:#include #include using namespace std;struct Base { int j; virtual void f() { printf("B\n"); } };struct Derived: Base { void f() { printf("D\n"); }};void fooBar(){原创 2013-08-29 16:16:20 · 733 阅读 · 0 评论 -
inline函数和宏的区别
#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定转载 2013-09-08 16:34:06 · 858 阅读 · 0 评论 -
秒杀多线程系列
第一篇 多线程笔试面试题汇总 多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决转载 2013-09-08 18:37:54 · 797 阅读 · 0 评论 -
新浪微博技术架构分析-转载
中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴。作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展。图为微博平台首席架构师杨卫华演讲。大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的。很多技术人员转载 2013-09-25 23:13:18 · 823 阅读 · 0 评论 -
C++中的虚函数(virtual function)
1.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public: virtual void foo() { cout };class B: public A{public: virtual void foo() { cout转载 2012-10-08 10:18:21 · 863 阅读 · 1 评论 -
设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
创建型设计模式总结(转载请注明来源 http://www.cnblogs.com/jerry19880126/)创建型设计模式包括简单工厂模式,普通工厂模式,抽象工厂模式,建造者模式,原型模式和最简单的单例模式。 简单工厂模式(Simple Factory) 从UML图中可以看出,(UML类图关系可参考 http://blog.csdn.ne转载 2013-04-26 17:28:24 · 745 阅读 · 0 评论 -
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,转载 2013-04-24 10:21:35 · 659 阅读 · 0 评论 -
如何写出杀手级简历(针对程序员)
这几年,我在Google工作,是一名软件工程师(之前是在微软做一个开发团队的队长),我曾浏览过成百上千的简历,从中挑选出可以进行下一步面试过程的 应聘者。 有些人的简历给我留下了很深的印象,而另一些则没有感觉。慢慢的,有越来越多的朋友和亲人向我咨询如何优化他们的简历,所以我就收集了一些我见过的简历中出现的最常见的问题,并给出了如何避免这些问题的建议:1. 简历里要有你工作的技术细节转载 2012-10-12 10:55:29 · 882 阅读 · 0 评论 -
进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。转载 2013-05-08 16:42:29 · 667 阅读 · 0 评论 -
acm竞赛要掌握的知识 & 北大ACM分类 & ACM网址大全
图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征负边权最短路径Be转载 2012-08-13 17:27:04 · 4567 阅读 · 1 评论 -
C语言 sleep wait 函数 区别
转 http://unix-cd.com/unixcd12/article_7083.htmlC 语言中可用 sleep() 函数实现休眠,具体如下: #include (1) MFC中的Sleep函数原型:void Sleep(DWORD dwMilliseconds);//微秒(2) linux下的slee转载 2012-06-16 18:01:23 · 4504 阅读 · 0 评论 -
C++ 全局对象 全局变量和局部变量 静态变量
讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的话,那么你可能转载 2012-06-15 18:39:55 · 26888 阅读 · 1 评论 -
读书笔记_深入理解计算机系统_第1章_计算机系统漫游 (代码编译链接详细过程)
第一章:计算机系统漫游信息是什么?昨天和同学走的时候,正好就说起了这个话题,“信息就是概率”,同学如是说。那么信息在计算机里是什么呢?总不能还说是概率吧,计算机可不懂什么概率。在本书第一章第一页的标题上赫然写着“信息就是位+上下文”。什么是位?位就是比特,就是二进制。计算机里没有概率,有的只是一连串0或1的序列。那什么是上下文?这个跟我们经常在英文阅读理解里遇到的“上下转载 2013-04-25 15:14:40 · 1293 阅读 · 0 评论 -
关于fork()返回值
fork简介: fork英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的Unix(或类Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork () 的作用是什么?换句话说,你用 fork () 的目的是什么? ――是为了产生一个新的进程,地球人都知道 :)产生一个什么样的进程? ――和你本来调用 fork (转载 2013-04-22 16:10:27 · 733 阅读 · 0 评论 -
面试 智力题 概率题 游戏题
史密斯夫妇握手问题题目:史密斯夫妇邀请另外四对夫妇就餐,已知他们每个人都不和自己握手、不和自己的配偶握手、且不和同一个人握手一次以上。在大家见面握手寒暄后,史密斯问大家握手了几次,每个人的答案都不一样。问:史密斯太太握手几次解答:1. 总共10个人,每个人不与自己握手,不与配偶握手,不与同一个人握超过一次手,所以每个人最多握8次手,最少0次;原创 2013-09-26 21:14:03 · 2182 阅读 · 0 评论