华为面试准备
1 struct与class区别
如果没有多态和虚拟继承的话二者的存取效率是一样的
class中成员在内存中的布局不一定是按照数据成员声明的顺序排。
在默认权限上,class默认是private继承,而struct默认是public继承。
class还用于定义模板参数,struct不用于定义模板参数。
2 error与exception区别
error不可控制,用来表示系统错误或底层资源的错误,如果可能的话,应该在系统级被捕捉,一般程序不做处理。
exception是可以被控制的,表示一个由程序员导致的错误,应该在应用程序级别处理。
3 常见软件测试方法
黑盒法白盒法
4 int *const p,int const *p,int const *const p的区别
5 在字符串STR中找到字符串substr的个数
6 将字符串右移N位
7 大端和小端的区别
指的是cpu对操作数的存放方式
大端:操作数存放是从高字节到低字节
小端:操作数存放是从低字节到高字节
8 strlen和sizeof的区别
前者是函数,后者是关键字;
前者用char*作为参数去计算一个字符串的大小,后者使用类型作为参数计算出某一数据类型的大小
前者是在运行的时候计算,后者在编译的时候计算
9 指针和数组的区别
数组可以通过取下标的方式修改,指针不允许。
使用sizeof返回的大小不同,数组返回的是整个数组需要的空间大小,指针返回的是该指针型变量所占的空间大小
10 c/c++如何读写文件
11 堆和栈的区别
12 虚函数和纯虚函数
虚函数:将基类中的某个函数定义为虚函数,这样指向基类的指针在操作它的多态对象时,会根据不同的类对象调用其相应的函数。
基类的函数定义为虚函数,派生类中同名函数自动成为虚函数。
纯虚函数:纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基? ? ? ? ? 类的派生类去做。这就是纯虚函数的作用。
13 程序在内存中如何分布
程序段:存放代码
数据段:全局变量、静态变量
堆:动态分配的存储空间
栈:局部变量(比如函数中的变量)
14 内存泄漏
内存泄漏:资源申请后需要释放,否则会出现内存泄漏,内存的浪费
15 宏定义
预处理的一种。做的是替换工作,不做计算,也不做表达式求解。使用define来替换。
16 heap和stack的区别
前者是堆,后者是栈
栈的空间由操作系统自动分配和释放,堆的空间是手动申请和释放。
栈的空间有限,堆的空间是很大的自由区。
17 链表的后序遍历的实现
18 有序单链表的插入函数
19 项目
20 实时操作系统和非实时操作系统的区别
1.先是自我介绍,然后叫我给他讲了一个项目,讲的很细,大概有二十分钟吧,期间也回答了他针对项目的问题。
2.android怎么防止进程被杀死
提高进程的优先级、依赖于其他优先级高的进程.
3.volley框架原理
4.怎么清理应用缓存
5.pull,sarx,dom解析器的区别
6.java类加载机制
7.java垃圾回收算法
8.http报文格式
9.http与https的区别
10.服务器与app之间怎么加密传输
11.设计一个xml格式,将一个类序列化为xml
12.介绍非对称加密
13.介绍三级缓存原理
14.怎么保持长连接
15.说说对spring的理解 ioc,aop等
16.android热加载
17.android内存模型(直接说的不会)
又说了说程序开发的流程,什么样的代码是比较好的代码?开发人员需不需要做测试?程序开发中能不能做到0错误?大概面了半个小时
0、简单介绍一下自己
1、讲一下你的项目
2、你的项目用到了哪些技术
3、synchronized和lock的区别
synchronized对象互斥锁,在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。
lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。
lock比synchronized提供了更细的粒度、更灵活的控制。
前者是在JVM的层面上实现,后者是用户写的,需要用户来保证最终释放掉锁。
3、数据库查询时间(优化问题)
4、写一段synchronized可能发生死锁的代码(当时我不确定到底使用synchronized会不会真正发生死锁)
5、分析刚才写的代码(手写代码)如何发生死锁的
6、死锁的条件
7、摒弃死锁的条件有哪些
8、有没有想问我的
1、你的项目有什么可以说的
2、你比较偏向哪方面的工作
3、我说了Java之后,给我说了SDN,大部分用到Java,一般在杭州、南京、还有哪个来着,我给忘了,问我想不想去
4、你四六级过了?是党员么?
5、在学校参加过电视台志愿者活动?
6、有什么想问我的
1、项目(主要内容、项目角色、做了哪些具体的工作、遇到的困难以及如何解决)
2、常用数据结构与算法(问的不难,不需要写代码,但是要表述清楚)
3、比赛
4、论文
5、生活爱好
6、对公司以及岗位的理解
7、生活方面的问题(跟聊天一样)
=然后他问了一下线程和进程的区别,我只大概说了说,(http://blog.csdn.net/yaosiming2011/article/details/44280797),可能说的不太好吧,他又问了一下我网络知识,TCP/IP的分层,(我觉得4/5都是有道理的)(http://blog.csdn.net/wileyoung/article/details/9627555),我就说我在书上学的时候是分五层的,但是在网上看到可能更多是4层,因为数据链路和物理层可以看作是一层:网络访问层?;刮柿薚CP/UDP的区别:(http://blog.csdn.net/a199228/article/details/7020884),这个我大概还是记得,但没说全吧,然后他又问udp的可靠性怎么提高(我不确定是不是问,靠什么维持它的可靠性),我就掰了掰我能想到的方法,后来想还不如交给应用层负责= =大概问到这他觉得问的也差不多了,就聊了下什么时候能去实习,实习时间有多长的问题,(因为之前有电话聊过,说一般要实习四个月,我就只能说从7月中开始,3-4个月的时间)然后让我出去等二面。
计算机网络,然后让我说七层模型
1、悲观锁、乐观锁
2、CAS
3、OSI七层
4、HTTP协议
分享给大家两个华为上个月优招时综合面试的问题。
1、如果发现对工作不满意会怎么解决?
2、如果觉得工作太简单无法表现自己的实力你会怎么做?
因为小弟我20号也准备参加华为的面试,现在我初拟的回答是这样的。。。
1、如果问题出在我个人使得我难以完成任务,我会加倍努力在工作之余提高自己的能力并向身边优秀的同事请教
如果工作确实不适合自己,我会跟领导沟通然后寻找其他的工作机会。
2、如果工作太简单,我会先尽量把工作认真完成,再向领导说明情况,主动申请一些新的任务。但如果我还是觉得发挥不出我的能力,可能会寻找其他的工作机会。
在华为、中兴等企业招聘笔试面试中曾经出现过这样一道题目:什么函数不能声明为虚函数?
该题答案为:普通函数(非成员函数)、静态成员函数、内联成员函数、构造函数、友元函数