同花顺2018秋招C++试题

真的很感谢牛客网,学到了很多,面试时也用到了,这是我做过的同花顺前端试题,分享给大家,说不定就用上了呢~~

一. 基础题


1. Cstatic函数有什么特点?在C++中如何实现类似效果(不用static)?

2. 在一个工程里面有一个头文件base.h,在aa.cppbb.cpp都包含了这个头文件:

(1) 如果在base.h定义了一个全局变量

int g_ntest;

能编译通过吗?为什么?

(2) 如果在base.h定义了一个静态变量

static int g_ntest;

能编译通过吗?为什么?

3. C++0x是什么,里面有哪些新特性

4. 请选出下列代码中你认为正确的选项(多选),如果有错误的,请写出错误的原因。

(A) char s[5] = [‘a’, ‘b’, ’c’, ‘d’,’e’]’;

(B) char s[5] = “abcde”;

(C) char s[5]; s = “abcde”;

Dchar* s; s = “abcde”;

5. public class

Test{

private static String getA() {return “a”;}

public static void main(String[] args){

String a = “a”;

final String c = “a”;

String b = a + “b”;

String d = c + “b”;

String e = getA() + “b”;

String compare = “ab”;

System.out.println(b == compare);

System.out.println(d == compare);

System.out.println(e == compare);

}

}

输出的结果是什么?

6. 如何让c++不分配内存但调用构造函数?

如何让c++ new一个对象的时候只分配内存但不调用构造函数?

7.

class A {

public:

A();

~A();

public:

bool Init(int a);

}

如何使用typedef表示A中的Init这一类的成员函数?

8. 你知道有哪些字符集编码格式?常见的乱码原因有哪些?

9. 请分别写出doubleintfloatbool、指针类型的变量A的比较语句

10. 什么是深拷贝?什么是浅拷贝?

11. 在多线程编程中,往往会遇到线程安全问题,编程中需要小心。

列举一些c语言中常用的线程不安全的函数、或开源库中的接口函数。

12. 下列代码有什么问题,执行结果是什么?

class classA

{

public:

void SetValueAt(const CString& strKey, LPCTSTR lpsrValue);

void OutPut();

protected:

unsigned short m_nPeriod;

long m_lBeginTime;

long m_lEndTime;

}

void classA::SetValueAt(const CString& strKey, LPCTSTR lpszValue)

{

if(0 == strKey.CompareNoCase(“DateTime”))

{

scanf(lpszValue, T(“%d(%d-%d)”), &m_nPeriod, &m_lBeginTime, &m_lEndTime);

}

}

void classA::OutPut()

{

std::cout << &m_nPeriod << std::endl,

std::cout << &m_lBeginTime << std::endl,

std::cout << &m_lEndTime << std::endl

}

int main()

{

classA A;

A.SetValueAt(“DateTime”, “o(123-456)”);

A.OutPut();

}

13. struct CTestData

{

long m_long;

int m_int;

}

int _tmain(int argc, _TCHAR* argv[])

{

CTestData* p = NULL;

Int result = (int)&p->m_int;

return 0;

}

14. 为什么析构函数常定义成虚函数?

15. A.dll中有一个get_something接口,如下

char* get_something()

{

char* p = new char[256];

memset(p, 0, sizeof(p));

//p就行赋值操作 具体代码略

//…

return p;

}

B.dll中如下调用

char* ret = get_something()

//use ret

//…

delete ret;

以上代码是否有问题?如果有请指出并说明原因和修复方式。

16. 解释堆和栈的区别?使用C/C++代码举例。

二. 开放逻辑题

1. 当你发现有用户在搜索引擎中搜以下词汇,你觉得用户分别是想了解什么信息?“金属 官员”,“高盛高华 煤”

2. 同花顺客户端有一个功能叫做键盘精灵,当键盘输入时,能显示出相关的股票代码。比如输入0,会显示出000001000002等几千个股票代码。

这些股票代码在内存中存储时,有几万个结构体,在用List控件显示时,需要往List控件中插入几万条信息。

针对上述描述,你认为有什么地方可以优化、怎么优化,使得程序性能提升,用户体验优化?

三. 编程题

1. 对下面字符串进行转换,将”sdSdsfdAdsdsdfsfdsdASDSDFDSFs”字符串大写变小写,并且将字符串变为镜像字符串,例如:’A’变成’Z’’b’变成’y’

2. 使用htmlcss实现一个下拉列表,鼠标进入显示三个子菜单,鼠标离开隐藏子菜单

3. 实现如下函数,要求输入年月日,返回该参数对应这年的第几天:

int GetDay(int nTime);

例如:nTime = 20150817, 则需要返回2015817号这天是2015年的第几天。

4. 请使用C++/PHP/Java中任意一门语言,使用面向对象的思想为同花顺牧场设计一台能自动给多种家畜喂饲料的机器,要求既能满足喂养牧场中现有家畜的喂养,又能很方便的支持未来引进其他品种的家畜。

5. 编写一个线程安全的单例模式,语言不限。

6. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

7. 不使用中间变量交换两个数的值,请尽可能的写出多种方法。

8. 使用递归算法把一个单向链表反转函数定义声明如下:

struct List{

int iValue;

List *next;

};

List *reverse(List *oldList, List *newHead = NULL)

9. 描述:

写一个程序计算单词的数量且按照数量的大小排序。

Input:

文本文件,其中每一行一个单词。

Output:

<word_one><space><count_one>

<word_two><space><count_two>

其中count_one, count_two, …从大到小排序

要求:

试用任何一种脚本语言完成这个程序。

10. Reverse String

四. 阅读题

1. 有如下html片段,实现点击每个单元格输出该单元格内的值转换成百分比(保留2位小数)和该单元格对应的表头,输出格式如“同花顺:3.30%

<table>

<thead>

<tr>

<th>股票名称</th>

<th>涨跌幅</th>

</tr>

</thead>

<tbody>

<tr>

<td>同花顺</td>

<td>0.03<>/td>

</tr>

<tr>

<td>…</td>

</tr>

2000

</tbody>

</table>

2. 找错

(1)

Void test1()

{

char string[10],

char* str1 = “0123456789”;

strcpy(string, str1);

}

(2)

Void test2()

{

char string[10], str1[10];

for(i= 0; i < 10; i++)

{

str1[i] = ‘a’;

}

strcpy(string, str1);

}

(3)

Void test3(char* str1)

{

char string[10];

if(strlen(str1)<=10)

{

strcpy(string, str1);

}

}

3. int main(int argc, char ** argv)

{

int sockfd, new_fd; /*监听socket:sock_fd,数据传输socket:new_fd*/

struct sockaddr_in my_addr; /*本机地址信息*/

struct sockaddr_in their_addr; /*客户地址信息*/

unsigned int sin_size, myport, lisnum;

if(argv[1]) myport = atoi(argv[1]);

else myport = 7838;

if(argv[2]) lisnum = atoi(argv[2])’

else lisnum = 2;

if((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {

perror(“socket”);

exit(1);

}

my_addr.sin_family = PF_INET;

my_addr.sin_port = htons(myport);

my_addr.sin_addr.s_addr = INADDR_ANY;

bzero(&(my_addr.sin_zero), 0);

if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1){

perror(“bind”);

exit(1);

}

if(listen(sockfd, lisnum) == -1){

perror(“listen”);

exit(1);

}

while(1){

sin_size = sizeof(struct sockaddr_in);

if((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1){

perror(“accept”);

continue;

}

printf(“server:got conection from %s\n”, inet_ntoa(their_addr, sin_addr));

if(!fork()){

if(send(new_fd, “Hello world!\n”, 14, 0) == -1){

perror(“send”);

close(new_fd);

exit(0);

}

}

close(new_fd); /*父进程不再需要该socket*/

waitpid(-1, NULL, WHOHANG); /*等待子进程结束,清除子进程所占用资源*/

}

}

这是一段简单的tcp服务器的代码,常见于一些demo中,如果将其用于正式的有着5000个在线用户的服务器,会有哪些问题。

4. 谈谈对下面两个类的理解,它们存在什么问题吗?在设计上有什么可以改进的地方吗?

class classA

{

public:

void Draw();

protected:

void dosomething();

void dosomething2();

void dosomethingX();

void dosomethingN();

}

classB

{

public:

void UpdataAllObjects(),

bool IsFlag() const{return m_bFlag;}

vois SetFlag(bool bFlag) {m_bFlag = bFlag;}

protected:

void dosomething(),

void dosomething2(),

void dosomethingX(),

void dosomethingN(),

protected:

bool m_Flag,

classA* m_pA,

}

void classA:Draw()

{

dosomething(),

dosomething2(),

dosomethingX(),

dosomethingN()

}

void classA::dosomethingX()

{

dosomething()

classB* pB = global::GetBHandle();

if(pB)

{

pB -> SetFlag(false);

pB-> UpdateAllObjects();

}

}

void classB::UpdateAllObjects()

{

dosomething(),

dosomething2(),

dosomethingX(),

dosomethingN(),

}

void classB::dosomethingX()

{

if(m_pA && m_bFlag)

{

m_pA -> Draw()

}

}

namespace global

{

classB* GetHandle()

{

static classB* pB = NULL;

if(NULL == pB)

{

pB = new classB

}

return pB;

}

}

#笔试题目##秋招##前端##同花顺#
全部评论
这是前端题?
点赞 回复 分享
发布于 2018-05-22 13:01
我感觉考c++,就不用玩了
点赞 回复 分享
发布于 2018-10-24 21:05
前端考C++是什么鬼啊……
点赞 回复 分享
发布于 2018-05-22 13:20

相关推荐

牛客73617529...:无端端被你骂一句
点赞 评论 收藏
分享
今天 18:09
门头沟学院 Java
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
27
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务