程序员面试
文章平均质量分 79
算法工程师000001
生命不息,奋斗不止。
展开
-
经典笔试面试题(二)
程序员面试原创 2015-09-26 10:37:32 · 3314 阅读 · 0 评论 -
写一个函数,计算4 000 000 000 以内的最大的那个f(n)=n的值
#include "stdio.h"#include //统计一个数字中1的个数int NumberofOne(int num){ int result = 0; while (num>0) { int r = num%10; if (r == 1) result++; num /= 10; } return result;}int main(){ int转载 2015-08-02 20:36:21 · 856 阅读 · 0 评论 -
求一个字符串中连续出现的次数最多的子串
求一个字符串中连续出现的次数最多的子串。例如字符串“abababc”,最多连续出现的为ab,连续出现三次。要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。两个题目的解法有些类似,都用到了后缀数组这个数据结构。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为:abababcbababcababcbabcabc转载 2015-08-02 19:33:04 · 463 阅读 · 0 评论 -
trie树及其应用
参考内容:1. 这位童鞋的文章 http://blog.csdn.net/zhulei632/article/details/67044962. 严蔚敏 -数据结构1.键树的定义: 键树又叫“数字查找树”。深度>=2 . 树中的每个节点一般不是直接包含关键字,而是包含组成关键字的符号(当然叶子节点除外,叶子节点可能包含整个单词以及词频,非叶节点也可包含单词转载 2015-08-01 18:13:37 · 483 阅读 · 0 评论 -
杭州嘉云数据电话面试
程序员面试原创 2015-07-30 14:44:11 · 3867 阅读 · 0 评论 -
嘉云数据电话面试详解
程序员面试原创 2015-07-30 19:25:03 · 2102 阅读 · 0 评论 -
求n个骰子各点数和出现的概率-动态规划
这几天在看剑指offer的时候发现,求n个骰子个点数和这个问题是发现书中讲的不是很清楚,于是查找资料,觉得下面讲的比较透彻,记录如下:题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。声明思想非原创!只因动态规划思想的使用很好,记下!分析:动态规划就是分阶段考虑问题,给出变量,找出相邻阶段间的关系。具体定义给忘了。转载 2015-08-09 13:43:43 · 3401 阅读 · 0 评论 -
默齐致知电话面试
程序员面试原创 2015-07-28 21:55:45 · 633 阅读 · 0 评论 -
使用位运算实现加减乘除四则运算
程序员面试宝典上有这个一个题,不使用+-×/来实现加法操作,想了半天,不明白,于是乎,查找了一些资料,反复研究,总结出了四则运算的位运算来实现。1.加法:异或操作求出没有进位的位,与运算为进位的位,然后左移一位为进位后的值。反复执行此操作,直到进位为零后,异或就为最终结果。2.减法:减法是加法的逆运算,第二个数取相反数+1后,执行加法操作。3.乘法:b个a相加的结果。也就是b中位为1的转载 2015-07-27 09:25:36 · 1187 阅读 · 0 评论 -
一个指针变量占几个字节问题
[cpp] view plaincopy# include int main(void) { int i = 373; double j = 4.5; char ch = 'A'; int * p = &i; double * q = &j; char * r = &ch;转载 2015-06-14 11:38:59 · 872 阅读 · 0 评论 -
String StringBuffer StringBuilder
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常转载 2015-06-14 21:09:15 · 332 阅读 · 0 评论 -
const在c中和c++中
const原创 2015-08-29 16:23:54 · 649 阅读 · 0 评论 -
操作系统中作业、程序、进程、线程及管程的定义与联系
概念作业作业是指用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括程序,数据及其作业说明书。程序程序是为解决一个信息处理任务而预先编制的工作执行方案,是由一串CPU能够执行的基本指令组成的序列,每一条指令规定了计算机应进行什么操作(如加、减、乘、判断等)及操作需要的有关数据。进程进程指是具有一定独立功能的程序关于某个数据集合上转载 2015-08-03 12:51:09 · 935 阅读 · 0 评论 -
内部排序
内部排序实现原创 2015-08-21 18:05:18 · 569 阅读 · 0 评论 -
经典笔试面试题总结(一)
经典面试题原创 2015-09-26 10:31:04 · 17306 阅读 · 0 评论 -
阿里一面(电话面试)
程序员面试原创 2015-07-24 19:08:31 · 1844 阅读 · 0 评论 -
排列组合问题
排列组合问题原创 2015-08-29 14:47:26 · 812 阅读 · 0 评论 -
程序员几个重要的网站
程序员面试原创 2015-08-03 10:47:03 · 1290 阅读 · 0 评论 -
写一个函数,模拟strstr()函数
#includeusing namespace std;const char*strst1(const char* string, const char* strCharSet){ for (int i = 0; string[i] != '\0'; i++){ //依次进行大串遍历 int temp; temp = i; //做标记和传递作用 int j = 0; wh转载 2015-08-02 20:03:35 · 421 阅读 · 0 评论 -
输入一行字符串,找出其中的相同且长度最长的字符串
#include #include using namespace std;//输入一行字符串,找出其中的相同且长度最长的字符串P227pair fun(string s){ string str = s; string tem; int maxlen = 0; pair res; //双重循环+长度判断取出字符串的所有子串 for (int i = str.length()转载 2015-08-02 19:54:08 · 988 阅读 · 0 评论 -
计算git树上任意两点的最近分割点。
小米面试题原创 2015-08-14 20:15:50 · 1472 阅读 · 0 评论 -
观察者模式
观察者模式 Observer 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 观察者模式的组成 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。转载 2015-08-03 10:25:22 · 456 阅读 · 0 评论 -
单例模式(Singleton)
单例模式(Singleton)首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模转载 2015-08-03 10:08:24 · 455 阅读 · 0 评论 -
阿里电话面试题详解
程序员面试原创 2015-07-25 18:07:51 · 1499 阅读 · 0 评论 -
tcp和udp
TCP与UDP的区别1. 理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端接收方发送的确认信息中包含了自己剩余的缓冲区尺寸剩余缓冲区空间的数量叫做窗口2. TCP的流控过程(滑动窗口)2. TCP 与UDP的区别 很多文章都说TCP协议可靠,转载 2015-06-14 15:01:36 · 458 阅读 · 0 评论 -
堆、堆栈与数据结构中的堆
栈(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(heap): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表堆(数据结构):堆可以被看成是一棵树,如:堆排序 有人说的很详细一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分转载 2015-05-29 10:45:06 · 1116 阅读 · 0 评论 -
从数据流中随机取m个数
还记得百度网页搜索部面试的时候,面试官问了这个问题,回答的一塌糊涂,今天恰好找到了这个答案,记录一下,对了还发现了一个非常好的网站,是关于程序员面试算法的http://www.jiuzhang.com/problem/Q:有一个很大很大的输入流,大到没有存储器可以将其存储下来,而且只输入一次,如何从这个输入流中等概率随机取得m个记录。 A:开辟一块容纳m转载 2015-05-29 10:01:27 · 1251 阅读 · 0 评论 -
动态规划法-------最大连续子序列和
记得有次去索尼还有一个啥公司忘了名字,都问到了这个问题,找了下答案,特此记录一下:问题描述 : 数组 INT A[] = {-4 , 3 ,56 , -15 , 34 , 0 , -14 , 4} ; 某几个连续的子序列其和最大,比如A0+A1 = -1 。A1+A2+A3+A4 = 78 。则A1 A2 A3A4组成的数组即是所求。 解转载 2015-05-29 11:06:48 · 505 阅读 · 0 评论 -
从M个数中随机等可能的取出N个的问题
http://blog.csdn.net/caishenfans/article/details/6743512从0到m-1这m个数中随机取出n个(n 第一个方法是把这m个数丢到一个List里面 然后用nextInt(list.size())来产生随机数 然后把list里面对应的元素丢到另一个数组或者list里面 这个方法本来是不错的 但要注意的是 为了保证每转载 2015-05-29 09:08:45 · 1104 阅读 · 0 评论 -
一个带有函数的类占几个字节
一个带有函数的类占几个字节原创 2015-06-17 12:10:52 · 4223 阅读 · 0 评论 -
爬楼梯问题
爬楼梯问题,斐波那契数列,递归思想原创 2015-05-28 17:33:12 · 1174 阅读 · 0 评论 -
KMP算法
今天在看数据结构的时候发现了kmp算法,还记得年初去nice面试的时候,面试官直接问我kmp算法是什么,我说没听过,当时他就晕了,我说数据结构没有这个算法呀,他说在严蔚敏老师那本书里面有的。突然想起好几个面试官都问了这个问题,只不过是问得更高端,在应用场景中利用该算法,可惜没有回答上来,今天就花了一点时间来认真理解了一下,来做个总结。总体来说这个算法是在一个字符串中找出给定的字符串,并返回出现的位...转载 2015-05-28 16:52:39 · 4306 阅读 · 1 评论 -
二进制文件和文本文件的区别和联系
将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别; 接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同转载 2015-05-28 10:00:55 · 577 阅读 · 0 评论 -
进程和线程的区别和联系
1.进程和线程1.1 概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个转载 2015-05-28 09:33:42 · 383 阅读 · 0 评论 -
进程和线程的形象描述
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,转载 2015-05-28 08:57:23 · 1074 阅读 · 1 评论 -
c 中volatile关键字的作用
举例说明:volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编转载 2015-06-16 15:55:52 · 392 阅读 · 0 评论 -
7种经典排序算法的图解
今天不经意间发现了几种典型的排序算法的图示,特别是让我明白快速排序他的最坏情况下的时间复杂度是n×n,n×logn只是平均时间复杂度,感觉非常好,记录一下:1. 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n转载 2015-05-29 12:54:05 · 504 阅读 · 0 评论 -
malloc和calloc的区别和联系
malloc()与 alloc()C语言跟内存分配方式(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的转载 2015-06-14 20:33:58 · 525 阅读 · 0 评论 -
C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast
前言这篇文章总结的是C++中的类型转换,这些小的知识点,有的时候,自己不是很注意,但是在实际开发中确实经常使用的。俗话说的好,不懂自己写的代码的程序员,不是好的程序员;如果一个程序员对于自己写的代码都不懂,只是知道一昧的的去使用,终有一天,你会迷失你自己的。C++中的类型转换分为两种:1.隐式类型转换;2.显式类型转换。而对于隐式变换,就是标准的转换,在很多时候,不经意间就发生转载 2015-06-15 12:12:12 · 467 阅读 · 0 评论 -
阿里电话面试详解
上一篇疏忽了一个问题,面试官还问了这么一个问题:深拷贝和浅拷贝,当时只是说了一下概念,并不会仔细说来。查了一下资料,做个总结:对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>u转载 2015-07-25 19:11:02 · 844 阅读 · 0 评论