CVTE内推面试(c++)

内推是通过微信上泡面之路推荐的,大家可以关注微信公众号泡面之路,上面提供各名企的内推和校招信息

先是笔试,选择没什么好说的(也记不到),基本上都是一些基础问题,数据结构,数据库,计算机网络,操作系统,

算法好的基本都可以回答。 笔试最后两题是编程题:

1.自己实现atoi函数,只考虑整数

函数功能就是将字符串转换成整数并返回。 题目要求只考虑整数就很简单,不用再考虑其他情况。 主要考虑到负数情况就可以了。

2.实现一个函数完成四则运算,包含 + - * / ( )

学数据结构的时候写过,当时一时想不起算法,感觉很麻烦就放弃了 之后想起算法自己手动实现了

具体算法是:

一.将输入的算式(中缀表达式),转化为后缀表达式(用一个队列来保存) 扫描中缀表达式:

1.遇到数字就入队

2.遇到操作符先判断符号栈中栈顶的符号优先级是否比当前的高,如果高就将符号栈顶的元素弹出并且入队,否则当前操作符入栈

3.遇到正括号直接入栈,遇到反括号就将栈顶元素弹出并且入队,直到栈顶元素为正括号(弹出,不入队)

4.扫描结束后将符号栈剩下的符号弹出并入队

二.利用一个数字栈来处理后缀表达式,最终数字栈中的数字就是答案

扫描用队列保存的后缀表达式:

1.遇到数字就入栈

2.遇到符号就将数字栈弹出两个操作数,并进行运算,将结果入栈

3.扫描结束后,数字栈顶的元素就是答案

然后就是面式:

一开始介绍项目,然后问几个问题

是否了解android架构

不是很了解

开发企业生产管理系统时用到了哪些四大组件

button label...(被指正后才知道是activity之类的)

是否用cocos2d独立开发过一款游戏

没有。。

是否有驱动开发的经验

没有。。

然后就是一些具体问题(不分先后顺序,个人回答,欢迎指正)

1.boost库有哪些库

arry库,function库,bind库,thread库等

2.数组和指针的区别

数组名相当于一个指针,但是不能改变指向,而指针是可以修改指向内容的

对数组名求大小可以算出整个数组的大小,对指针求大小只能求出指针的大小

3.堆和栈分别在什么情况下使用

堆是程序员手动管理,栈是系统自动管理

堆空间比栈大,如果需要申请大空间需要用堆

堆的生命周期是整个程序,栈中变量的生命周期是函数内部,如果内存想在函数之外使用需要用堆

4.java反射是什么,说一种使用使用反射的场合

可以通过对象来获取该对象的全部信息,包括类名,成员,方法,返回值等, hibernate框架在拼接sql语句的时

候需要用到反射技术

5.java中抽象类和接口的区别

接口只提供方法让其他类重写,抽象类可以定义变量和实现方法

接口可以让java实现多继承,抽象类用于单继承

6.线程调度有哪些算法(估计他是想问进程调度算法)

先来先服务 最短任务优先 时间片轮转 反馈调度

7.多进程和多线程的区别

进程是CPU资源分配的最小单元,线程则是共享进程的资源,进程间切换代价比线程切换高

8.如何实现一对多的通信

基于TCP协议的网络通信可以实现一对多通信,服务器阻塞等待客户端连接,客户端每个连接用一个socket进行

处理。即多个客户端对一个服务器的通信

9.TCP断开连接为什么需要四次挥手

TCP是双工通信,任何一方断开连接都需要发送消息并且让对方进行确认,所以一共需要四次挥手

10.进程间通讯的方法有哪些

消息队列 信箱 管道 共享内存

11.信号量和互斥体的区别

互斥体每次只能让一个线程进行访问,而信号量可以设置线程同时访问的上限

12.有什么经典书籍可以推荐

c++primer 算法导论

13.平时喜欢上什么网站

csdn 百度

14.有什么问题需要问

工作内容 男女比例问题 加班问题

(以上是大部分问题,可能会有些遗漏)

面试完个人感觉还不错,基本上问到的都能回答大部分,只不过是项目那部分的问题有点惨 原以为个人报c++(android问题) 还是学生(驱动开发),这些问题答不出影响不是很大应该能过这一轮面试, 没想到还是跪了,异或是因为回答得不够充分。 总之感觉每个问题都要回答很好才能过面试= =。。名企之路真是艰难啊。。

原文地址:https://www.cnblogs.com/wzsblogs/p/4713766.html