
面试笔试题
zjq_smile
这个作者很懒,什么都没留下…
展开
-
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。 #include<stdio.h> #include<errno.h> #include<string.h> #include<stdlib.h> #include<pthread.h> #define转载 2017-07-20 11:25:15 · 600 阅读 · 0 评论 -
自己实现printf()函数
大概去年夏天的时候,在《C和指针》里面一个练习题要求实现一个很简单的不包含打印浮点数功能的printf函数。但是很好奇,于是一直纠结下去,结果就是知道了printf的实现,自己也写了一个简单的。或许是夏天的原因吧,那时候暑假没回去,凌晨四点兴奋到不能睡觉。那时候刚开始写blog。没想整理一下,只是简单的把最重要的实现"工具"贴了一个blog在http://blog.youkuaiyun.com/cinmy转载 2017-08-10 11:12:18 · 656 阅读 · 0 评论 -
Dijkstra算法(单源最短路径)
Dijkstra算法(单源最短路径) Dijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该转载 2017-07-26 10:06:15 · 473 阅读 · 0 评论 -
只有五行的Floyd最短路径算法
我们来想一想,根据我们以往的经验,如果要让任意两点(例如从顶点a点到顶点b)之间的路程变短,只能引入第三个点(顶点k),并通过这个顶点k中转即a->k->b,才可能缩短原来从顶点a点到顶点b的路程。那么这个中转的顶点k是1~n中的哪个点呢?甚至有时候不只通过一个点,而是经过两个点或者更多点中转会更短,即a->k1->k2b->或者a->k1->k2…->k->i…->b。比如上图中从4号城市到3号转载 2017-07-26 10:24:02 · 484 阅读 · 0 评论 -
二叉排序树
二叉排序树或者是空树,或者是具有系列性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值均小于他的根结点的值 若它的右子树不空,则右子树所有结点的值均大 于它的根节点 它的左右子数也分别为二叉排序树 目的:提高查找和插入删除关键字的速度#include <stdio.h>#include <stdlib.h>#define FALSE 0#define TRUE 1//二叉原创 2017-07-27 11:18:16 · 339 阅读 · 0 评论 -
平衡二叉树
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#define LH 1 //left high#define EH 0 //equal high#define RH -1 //right high#define TRUE 1#define FALSE 0typedef struct原创 2017-07-27 19:32:49 · 308 阅读 · 0 评论 -
把文件中的一组整数排序后输出到另一个文件中(c/c++)
我是自己先建立一个文本文件a.txt,里面写了整数: 1 23 45 67 89 0C语言实现:#include<stdio.h>#include<errno.h>#include<stdlib.h>void sort(int *a,int len){ int i; int j; for(i = 0; i < len-1; i++) { for(原创 2017-08-14 12:45:46 · 2593 阅读 · 0 评论 -
约瑟夫环(数组和链表实现方式)
很经典的编程问题! 约瑟夫环问题的原来描述为,设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,问最后一个人的序号根据数据的存储方式分,我这边提供两种解题方法:一种是数组,一种是链表1、数组的解法,用a[]来存储编号,用count来计数,数到m对应的那个a[i]设为-原创 2017-08-14 15:03:00 · 1115 阅读 · 1 评论 -
自己实现memcpy函数
#include<stdio.h>void* Mymemcpy(void *dest,const void* src,size_t count){ char *tmpDest = (char *)dest; char *tmpSrc = (char *)src; size_t i;//内存有覆盖的区域,从尾部开始复制 if((tmpDest > tmpSrc) &&原创 2017-09-04 19:40:41 · 1591 阅读 · 1 评论 -
生产者和消费者(PV操作、共享内存)
生产者一直在往共享内存中写数据#include<sys/sem.h>#include<sys/shm.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include"shm.h"int main(){ int ret; int shmid; int semid; int running;原创 2017-08-09 17:12:31 · 3365 阅读 · 0 评论 -
下面有关继承、多态、组合的描述,说法错误的是?
下面有关继承、多态、组合的描述,说法错误的是?A、封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏 B、继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展 C、隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了 D、覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同答案: BC解析: A原创 2017-07-25 10:10:58 · 2151 阅读 · 0 评论 -
广度(宽度)优先搜索:队列
上一章详细的写出了深度优先遍历的四种情况的程序: http://blog.youkuaiyun.com/zscfa/article/details/75947816这一次来详细说说广度优先遍历: 广度优先搜索类似于二叉树的层序遍历,它的基本思想就是:首先访问起始顶点v,接着由v出发,依次访问v的各个未访问过的邻接顶点w1,w2,…,wi,然后再依次访问w1,w2,…,wi的所有未被访问过的邻接顶点;再从这些原创 2017-07-25 00:37:56 · 1233 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { int data; if(stack2.empty()原创 2017-07-20 16:17:14 · 405 阅读 · 0 评论 -
常用排序算法总结
目录冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时转载 2017-07-20 17:10:58 · 380 阅读 · 0 评论 -
请问对一个排好序的数组进行查找,时间复杂度为()
请问对一个排好序的数组进行查找,时间复杂度为() A、O(n) B、O(lgn) C、O(nlgn) D、O(1)原创 2017-07-21 21:50:14 · 2033 阅读 · 0 评论 -
下列有关静态成员函数的描述中,正确的是:
下列有关静态成员函数的描述中,正确的是: A、静态数据成员可以在类体内初始化 B、静态数据成员不可以被类对象调用 C、静态数据成员不受private控制符作用 D、静态数据成员可以直接用类名调用答案:DA,静态成员属于类,而不是属于某个特定的对象,它是由该类的所有对象共享的,因此不能在类的构造方法中初始化 B,静态成员属于该类所有对象公有,可以被类对象调用 C,静态成员收private的原创 2017-07-21 21:57:17 · 10302 阅读 · 0 评论 -
图的深度优先遍历(递归、非递归;邻接表,邻接矩阵)
众所周知,图有经典的两种遍历方式:深度优先遍历和广度优先遍历 首先我们就来说说深度优先遍历,其他的不说了,直接上代码,分为递归个非递归的方式啊首先是递归的方式实现的,比较简单,考虑到存储结构由邻接矩阵和邻接表,有分为两种:一种是邻接矩阵存储的递归,简单点说就是用数组来存储;另一种是邻接表存储的,也就是说用链表的方式存储的一、递归 1、邻接矩阵:#include<stdio.h>#define原创 2017-07-23 19:59:55 · 25332 阅读 · 9 评论 -
以下程序输出结果是____。
以下程序输出结果是__。class A{public: virtual void func(int val = 1) { std::cout<<"A->"<<val <<std::endl;} virtual void test() { func();}};class B : public A{public: void func(int val=0原创 2017-08-01 16:27:24 · 7094 阅读 · 0 评论 -
用c++设计一个不能被继承的类
分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。 在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。 首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的转载 2017-08-02 12:16:42 · 2580 阅读 · 0 评论 -
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
有双向循环链表结点定义为: struct node { int data; struct node *front,*next; }; 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除 BOOL DeteleNode(Node *pHeader, DataType Value) { if (pHeader == N转载 2017-08-02 12:46:35 · 1152 阅读 · 0 评论 -
从1到n整数中1出现的次数
一开始最容易想到的就是用for循环,每一位每一位的找是否等于1 int NumberOf1Between1AndN_Solution(int n) { int count=0; if(n<1) return 0; for(int i=1;i<=n;++i) { int temp=i;原创 2017-09-07 17:31:18 · 395 阅读 · 0 评论