中体骏彩C++面试题
下面是我凭记忆想到的几个题目,有需要的同学就拿去吧,我也算做了点善事.
中体骏彩C++笔试题
2013-11-18
1.指针的含义是:B
A.名字 B.地址 C.名称 D.符号
2.给出下面的程序输出:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <locale>
using namespace std;
int main(int argc,char** argv){
char str[] = "陶";
char str1[] = "ztjcy中体骏彩";
wchar_t str2[] = L"ztjcy中体骏彩";
cout << strlen(str) << "," << sizeof(str) <<endl;
cout << strlen(str1) << "," << sizeof(str1) <<endl; 17,18
wcout << wcslen(str2)<< "," << sizeof(str2) <<endl; 9,40
return 0;
}
注意汉字占3个字节,是utf8编码时,宽字符大小是2字节,
3.重载(overload)和重写(overwrite)的区别?
重载overload:是函数名相同,参数列表不同 重载只是在类的内部存在。但是不能靠返回类型来判断。
重写override:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。函数特征相同。但是具体实现不同,主要是在继承关系中出现的 。
4.指出下面程序的错误?
class A{
public:
A(){ p = this; }
~A(){ if(p){
delete p;
p = null;
}
}
private:
A* p;
}
5.线程A在无限制地循环运行,线程B采用什么方式能让线程A安全退出?
有很多种退出线程的方法,这些方法的被称做线程之间的消息传递、同步、共享等。
终止线程,可以向线程发送消息/信号,或者一个互斥量,或者改变内存中的变量等,来通知线程,当线程收到这些消息/信号后,先做一些处理,比如释放掉线程内的资源,保存线程的运行结果等,然后自己退出线程,并返回一个UINT值。
6.TCP和UDP的区别?
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
7.PeekMessage()和GetMessage()的区别?
相同点:
PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中的消息派发出去。
不同点:
无论应用程序消息队列是否有消息,PeekMessage函数都立即返回,程序得以继续执行后面的语句(无消息则执行其它指令,有消息时一般要将消息派发出去,再执行其它指令)。GetMessage函数只有在消息队列中有消息时返回,队列中无消息就会一直等,直至下一个消息出现时才返回。在等的这段时间,应用程序不能执行任何指令。
(从他们的不同点上来看,PeekMessage函数有点像“乞丐行乞”,有你就施舍点,没有也不抢。GetMessage函数有点像“强盗打劫”,有你得给,没有我就等你什么时候有了再给,这段时间我什么都不干,我就等你。)
8.输入一个整数,将它输出为以逗号分隔的字符串,比如1234567890,输出为"1,234,567,890"?
#include <iostream>
#include <string>
using namespace std;
int main()
{
//此程序用来格式化数字为“逗号分隔千位”的数值表示法,如:23,343,434,436
string str_number;
int str_length;
int swap_number;
cout<<"please enter an integer >= 1000:"<<endl;
cin>>str_number;
str_length = str_number.length();
swap_number = str_length % 3;
if(swap_number != 0)
{
cout<<str_number.substr(0,swap_number);
for (int i=swap_number;i<=str_length-3;i=i+3)
{
cout<<","<<str_number.substr(i,3);
}
}
else
{
for (int i=0;i<=str_length-3;i=i+3)
{
cout<<str_number.substr(i,3);
if(i != str_length-3)
{
cout<<",";
}
}
}
cout<<endl;
return 0;
}
9.给定一个大小为100的整数数组,要求随机地插入1......100中的数,要求不能插入重复的数,给出最高效的解法?
这题主要是借助stl中的set数据结构和rand()来实现高效的解法.set数据结构的一个特点是,键值合一,自动排序.
这里注意rand()的头文件是stdlib.h文件.下面是实现的参考代码
#include <stdlib.h>
#include <iostream>
#include <set>
using namespace std;
void create_rand(int len){
if(len <= 0){
cout << "please input a invalid value: " << endl;
return;
}
set<int> random_set;
do{
int val = rand()%len;
if(val == 0)
val = len;
if(!random_set.count(val))
random_set.insert(val);
}while(random_set.size()<len);
cout << "random array between 1 and" << len << ": " << endl;
set<int>::iterator set_it = random_set.begin();
while(set_it != random_set.end()){
cout << *set_it << endl;
++set_it;
}
}
int main(int argc, char** argv){
create_rand(100);
return 0;
}
这个是php的实现版本:
<?php
function create_rand(){
$arr = array();
do{
$rand = rand(1,100);
if(!in_array($rand))
$arr[] = $rand;
}while(count($arr)<100);
return $arr;
}
echo "create random integers between 1 and 100:\n";
var_dump(create_rand());
?>
相关文章:

Fibonacci数列的java实现
关于Fibonacci应该都比较熟悉,0,1,1,2,3.。。。。 基本公式为f(n) f(n-1) f(n-2); f(0) 0; f(1) 1; 方法1:可以运用迭代的方法实现: public static int f1(int n){if(n<1)return n;return f1(n-1) f1(n-2); }实现方法简单。 方法2&am…

stream流对象的理解及使用
我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成。 有多种方式生成 Stream Source: 从 Collection 和数组 Collection.stream()Collecti…

永成科技C++笔试题
最后几个题有点难度,在这里说一下: 永成科技C笔试题 2013-11-19 1.将1亿以内的质数存到一个超级大的数组中,用算法如何实现? 使用"筛法"求解1亿以内的质数的程序的思路: 先动态分配1亿个bit(总计12500000字节),用字节中的每一位代表每一个整数,首先将代表奇数的那…

事务库事务隔离级别
为了快速同步数据的需要,我分段执行了两次python脚本,即开启了两个进程同步数据,结果服务器不时报出数据库死锁异常,通过排查代码和数据库日志发现,是由长事务并发引起的。代码中有入账和出账两个方法,里面…
十大算法,描述+代码+演示+分析+改进(赶紧收藏!)
十大算法 1.冒泡排序 (1)算法描述 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是…

webkit入门准备
《webkit入门准备》1. Ca) Webkit代码风格b) Inlinec) Constd) 构造与析构e) 重载f) 继承2. 泛式编程a) Vector/List/HashTableb) Iteratorc) 智能指针3. 面向对象编程a) 对象概念b) …

oracle操作
一、导入dmp文件: 1.创建表空间create tablespace 表空间 datafile 路径\文件名.dbf size 1500M autoextend on next 5M maxsize 3000M;注:路径必须为已创建2.创建用户create user 用户名 identified by 密码 default tablespace 表空间;3.更改用户的表空…

一个form表单,多个提交按钮(实现不同功能和地址的提交)
直接上代码 表单部分: <form action"" name"find" method"post" enctype"multipart/form-data"><input type"text" name"name"/><br/><button οnclick"f1()"/>找…

chrome 硬件渲染(GPU Accelerated Compositing in Chrome)
原文链接 http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome chrome 中集成了webkit,这篇文章对webkit 硬件渲染过程有详细的介绍,很好。 简介 这篇文档讲解chrome硬件加速合成的实现细节和背景。 介绍 通常来讲&#…

CCS Font 知识整理总结
总是搞不懂 CCS 中如何正确的使用字体,这下明白了。 1、什么是 font-face font-face 顾名思义,就是文字的脸。字体是文字的外在形式,就是文字的风格,是文字的外衣。比如行书、楷书、草书,都是一种字体。同样一个字每个…

Maven安装与配置(最实用!!!)eclipse中配置maven
Maven安装与配置 一、需要准备的东西 JDKEclipse(本章主要是在eclipse中进行配置maven)Maven程序包 二、下载与安装 1. 前往maven下载最新版的Maven程序: 2. 将文件解压到D:\Program Files\Apache\maven目录下(这样子放目录结…
在Ubuntu 12.04 64bit上配置,安装和运行go程序
注意:下面的安装配置均遵从官网或是教材《Go语言程序设计》中的部分内容. 顺便说下,这是一本很难得的Go语言的入门教程,非常基础和全面。起初我因为这本书的封面比较讨厌它,闲置几年之后,一次偶尔要用时静心翻阅之后,发…

Linux下三个密码生成工具
http://code.csdn.net/news/2820879 想出一个难破解且容易记的密码对不是一件简单的事情。在我为电脑设定一个新密码,或者在线注册了一个新的账号,需要输入密码的时候,脑袋就一片空白。不过,Linux下有几个密码生成工具可以使用&am…

javabean实体类与实体类之间的快速转换
一、Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> articleVOArticleVO articleVO dozerMapper.map(article, ArticleVO.class);这段示例代码。将从数…

ATS程序功能和使用方法详解
转载自https://blog.zymlinux.net/index.php/archives/374 Apache Traffic Server的程序文件,与传统的服务器系统有大不同,这里我们将会对这些文件进行详细的解读,并尽可能的对程序的功能和基本用法、参数等进一步说明,以利于新入…

java 读取txt,java读取大文件
java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel; public class Test { public static void main(String[] args) throws Exception …

Spring Boot整合Spring Data JPA操作数据
一、 Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能&…
常用Linux命令总结
常用Linux命令总结 2013-12-08 压缩为gz格式 gzip error_2018082217.log 解压gz格式 gzip -d error_2018082217.log.gz 不解压来搜索gz格式的文件中的匹配行内容 gunzip -c 不真正解压.gz文件,而是检查该文件,不会生成多余的文件 gunzip -c error_20…
调试uIP出现死机问题
在调试uIP,加入http功能时,调试出现死循环 原因是所加入的http文件中含有printf等输出函数,遇到这种情况,有2种解决方法: 1.Keil中勾选“Use MicroLIB” 2. //加入以下代码,支持printf函数,而…

html+spring boot简单的ajax数据传输实现
本篇讲解在前后端不分离情况下的htmlspring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.demo.ajax.Entity.Person; import lombok.extern.slf4j.Slf4j; import org.jboss.logging.Param; import org.springfram…

Tafficserver旁路接入方案综述
转载自 https://blog.zymlinux.net/index.php/archives/821 随着宽带技术的加速普及,目前,几款高性能开源CDN方案在广大开源爱好团队的充分的测试、企业服务应用验证中破壳而出。实际这个地球的互联网用户都在知情与不知情之间使用了ATS的环保服务。这方…

url中去掉index.php,方便redirect()
01 配置文件 return Array( URL_MODEL > 2,); 02 index.php入口文件下面加入文件 .htaccess -->使用editplus-->另存为 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ i…

js校验复选框(多选按钮)是否被选中的方法
js校验复选框是否被选中的方法 方法一:(使用下标进行标记) if ($("#checkbox-id")get(0).checked) {// do something }方法二:(对被选中的进行操作) if($(#checkbox-id).is(:checked)) {// do…

ATS插件开发基础
转载自 https://blog.zymlinux.net/index.php/archives/540 ATS插件开发需要提前了解ATS的插件的一些设计思想,以及系统提供的一些不同方向。我们将会介绍ATS的基础开发知识,以利于后续的插件开发课程讲解。 ATS的SDK文档,是了解ATS的核心设…

NET基础(3):is 和 as 操作符
在C#语言中进行类型转换的另外一种方式是使用is和as操作符。is检查对象是否兼容于指定类型,返回Boolean值true或false。注意,is操作符永远不抛出异常,例如以下代码: Object o new Object();Boolean b1 (o is Object); //返回…

制作大白菜PE盘
大白菜是一款功能非常强大的U盘启动盘制作工具,通过大白菜我们可以把U盘做成可以引导电脑启动的启动盘,同时可以用于装系统或维护系统,虽然制作方法非常简单,不过还是有很多人不懂如何制作大白菜U盘启动盘,这两天我刚好…
为方便ATS管理建立的一些命令别名
转载自https://blog.zymlinux.net/index.php/archives/129 玩ats经常需要切换目录什么感觉敲得麻烦了就建立了一些命令别名,就方便多了。 在用户目录下的.bashrc文件中加入以下内容: alias alogcd /usr/local/var/log/trafficserver;pwd alias atscd /us…

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确
这个问题以前碰到过,也研究过,发表一下: 如果你认为表达式(x i)只是表达式(x x i)的简写方式,这并不准确。这两个表达式都被称为赋值表达式。第二个表达式使用的是简单赋值操作…

pom文件中引入常用的maven仓库
给大家分享几个maven仓库,如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个。可以直接拖放在pom.xml中使用。 阿里云仓库 <mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.ali…

ats新手学习参考
转载自https://blog.zymlinux.net/index.php/archives/129 首先申明本人是个实实在在的菜鸟,现在也只是搭建起来ats玩玩简单的,写本文只是为了给完全的小白一个参考而已。 本人刚开始接触ats的时候,从ats安装到配置也遇到了很多基本的问题&am…