版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA语言基础1、 Java有sizeof这种东西吗?为什么没有?【答案】没有,因为每种数据类型无论在什么机器上,大小都是一致的。2、 类成员有几种访问权限?各是什么含义?默认是什么权限?【答案】四种:package, public, private, protected,默认是package权限3、 类有几种访问权限?各是什么含义?public权限的类有什么要求? 【答案】两种:包权限和public权限,一个文件只能有一个public权限的类,而且类名必须和文件名一致。4、 实现类的static方法的时候有什么限制?为什么?【答案】只能访问static变量和方法。5、 关键字:final,
2、finally,finalize都是用在什么地方的?【答案】final表示不能改变的东西,finally是异常处理里面的必做内容,finalize是类的终结处理函数6、 为什么对String进行一些操作的时候,往往是使用StringBuilder或者StringBuffer?【答案】为了减少内存占用,因为StringBuilder/StringBuffer进行字符串操作的时候,不产生新的String对象7、 java中的内存泄漏一般是由于什么情况导致的?java内存一般分为几个部分,如何进行内存回收,如果判断一块内存可以回收?java内存回收有哪几种方式,大约描述一下?【答案】 一般为全局变量
3、的内存没有清空导致,或者ThreadLocal等保留的变量没有及时clear导致,回答的有道理即可;虚拟机内存分为方法区,堆,栈。java虚拟机在内存不够用的时候会自动进行内存回收,在应用程序空闲时,也会进行回收,或者程序手工调用GC。判断是否可以回收,最朴素的为引用计数的方法,但是无法解决循环引用的问题。一般的虚拟机采用从根结点进行遍历的方式,判断一个引用是否可以回收。能够回答到新生代,旧生代,以及对应的机制即可。理解串行回收,并行回收,并发回收等的特点和区别即可。8、 Java的类有析构函数吗?为什么没有?finalize()函数在何时会被调用到?为什么需要finalize()函数?【答案
4、】没有析构函数,因为有gc机制。Finalize函数在要进行gc的时候会被调用到。使用这个函数是因为要在finalize函数中作内存释放的工作,因为有的内存可能是通过jni分配的,需要清理掉。9、 一个比较复杂的类,创建对象的时候,按照什么顺序完成如下工作?【答案】A、 调用父类构造函数B、 按照声明的顺序调用成员的初始化方法C、 调用本类的构造函数10、 List,Set,Queue有什么共性,各自有什么特点?各举一个实现他们的具体类。【答案】他们继承于collection接口,List是按照插入的顺序保存对象(ArrayList,LinkedList),Set不能有重复的元素(HashSe
5、t, TreeSet, LinkedHashSet),Queue按照先入先出的规则处理其中保存的对象(LinkedList,PriorityQueue)11、 迭代器的作用,如何获得一个容器类的迭代器?【答案】迭代器可以使得用相同的方法遍历或者选择容器中的对象而不用关心容器的底层结构。通过调用容器(collection类的容器)的iterator方法可以获得这个容器类的迭代器。12、 JAVA的线程调度机制是怎样的?【答案】Java的线程机制是抢占式的,也就是虚拟机为每个系统都提供时间片,根据优先级的不同,分配的时间片也不同。13、 关键字synchronized修饰类的方法时的作用,sync
6、hronized起作用的内部机制是什么?【答案】synchronized为防止资源冲突提供了内置的支持,如果一个任务处于一个标记为synchronized方法的调用中,那么在这个线程从这个方法返回之前,所有其他药调用类中任何标记synchronized方法的线程都会被阻塞。实现的内部机制是因为所有对象都自动含有一个单一锁。14、 如何创建一个临界区?【答案】synchronized(某个对象). / 临界区代码C&C+语言基础1、 构造函数中的初始化列表有什么作用?(5分)【答案】有4个用途:初始化const成员,初始化引用成员,调用基类的构造函数初始化基类,调用成员对象的构造函数初始
7、化成员对象。2、 构造函数是否可以是虚函数,是否可以调用虚函数?(5分)【答案】构造函数不可以是虚函数,但是可以调用虚函数,但是其实调用的只是本类的版本,而不是子类的版本。3、 什么是“引用”?申明和使用“引用”要注意哪些问题?【答案】引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系
8、统也不给引用分配存储单元。不能建立数组的引用。4、 static、const、volatile、typeof关键字的用途描述(附上,实践中的示例描述)Static:静态函数、静态变量、静态类成员Const:const变量,const指针、const函数Volatile:多线程共享变量Typeof:获取类型值简单的概念描述,给一般分;可以结合具体应用,则较好;5、 malloc/free & new/delete的区别是什么?i. 编译时,New可以根据对象的类型,自动决定对象的大小;而malloc需要显式指定需要分配空间的大小。ii. New返回指向正确类型的指针,不必进行强制类型转换
9、;而malloc返回void *,必须进行强制类型转换,可能带来错误iii. 用new生成对象时,会调用构造函数, 用malloc则不会;同样,用delete删除对象时,会调用析构函数, 用free则不会.iv. 如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。因此,new/delete必须配对使用,malloc/free也一样6、 Struct 与 class的区别是什么?包括如下:i. 关于默认访问权限:class中默认的成员访问权限是privat
10、e的,而struct中则是public的。关于继承方式:class继承默认是private继承,而struct继承默认是public继承7、 指针和引用的区别是什么?i. 指针可以定义而不初始化,引用定义时必须初始化。ii. 指针初始化后还可以被重新赋值,引用初始化后不可以引用另外一个对象。iii. 指针可以自增自减来读写数据,如*(p+),引用不可以。iv. 没有NULL引用,必须确保引用是和一块合法的存储单元关联。算法和程序设计提交人题目类型v题目1 双数组求交两个数组,元素为int数据,长度分别为A和B,每个数组内部无重复元素,无序。求两个数组的交集。可使用内存无限,要求给出时间复杂度参
11、考答案方法很多样1 直接穷举,O(A*B)2 排序后归并 O(Alog(A)+Blog(B)+A+B)3 排序后二分4 hash主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)1 除了直接穷举外,能够想出1-2种方法2 能够正确给出时间复杂度3 能够给出方法优劣的评价题目2 快速排序这是一套题目的3个子问题,难度依次递进:问题1: 描述快排的基本思想并进行编码,以及一个典型的应用。问题2: 快排可以应用在链表上么?如果可以,请详细描述问题3: 除了快排,还有其他的排序可以在链表上达到O(lnN)的复杂度么?要求空间复杂度尽可能低。如果有,请给出思想。参考答案解答1:参考数据结构教材
12、。典型应用:求第N大或者第N小的数。解答2:快排可以应用在链表上。每次迭代需要两个指针,一个指向比pivot大的结点的链表,一个指向比pivot小的结点的链表,然后合并。解答3:还可以使用归并排序,逻辑比较复杂,需要考虑临时指针的使用,每个临时指针在过程中多次复用,否则会消耗大量的空间。具体参考stl中list的排序算法。主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)问题一:考察基本的数据结构问题二:考察变通能力。教材上不会讲list上的快排问题三:考察思维扩展能力,list的归并排序需要考虑空间的占用,尤其如何合理使用临时指针。面试至今,没见到过面试人能解决该问题。提交人题目类
13、型题目3 最大子数组给定一个长度为n的数组,求和最大的子数组;得到答案后,可将数组扩展为n×n的二维矩阵,求和最大的子矩阵参考答案问题1是一个动态规划问题,求解算式是Ret(n)= maxRet(n-1),以n-1结尾的最大值+Vn, Vn其中Ret(n-1)为以1开始的长度为n-1的数组中最大子数组和;问题2是问题1的延续,只需把二维矩阵转换为一维数组,方法是a=1.n,c=a.n,遍历使用一维,把a.c的列加起来成了一维的了主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)1.对动态规划的理解和灵活使用;2.具有较好分析和解决问题的能力1 题目4 判断重复元素 一个数组
14、AN,包含取值为1,N的元素,请判断是否有重复元素参考答案解法:1、Sum(1N)!=sum(A0,AN-1)则重复2、hash记数法3、排序后再判重主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)逻辑思路,对时间和空间复杂度的分析题目5:数组调整1. 输入一个整数数组,调整数组中数组的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分,要求时间复杂度为O(n)参考答案维护两个指针,第一个指针指向数组的第一个数字,只向后移动,第二个指针指向最后一个数字,只向前移动。当第一个指针指向数字为偶数,且第二个指针指向数字为奇数时,交换数字,并移动两个指针。主要考察点(被面试人
15、越能抓住这些点,则说明对题目把握越到位)对算法的理解,并非只想到简单机械的从头到尾遍历一个数组来实现一个目标。题目6:大数据处理有一个100G的文件存放在分布式平台,每行有10列,如何得到按第3列排序的文件?参考答案1) 以第三列为key进行map分发,所有数据分发到一个桶,利用框架的特点进行排序。此方法可行,但一个reduce处理100G数据,效率极低。2) 以第三列为key进行map分发,按照key的大小分发到不同的桶,使得所有数据按桶号有序,而桶内的排序利用框架完成。此方法速度快,但如果分桶不均,会变得很慢。3) 仍然使用b方法,但通过先验知识得到第三列的分布,从而据此均匀分桶。分布的获
16、得可以利用历史数据,也可以用当前数据,在排序前先进行一次map-reduce,得到分布。主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)1) 是否理解map-reduce处理的整个过程。2) 是否能利用每个reduce的排序功能进行分布式排序。3) 是否理解partition的意义和重要性,并提出解决分桶不均的办法。机器学习与数据挖掘(开放类型)题目1 用户建模可以从哪些方面对用户建模,以便向用户推荐合适的广告?需要哪些挖掘方法、数据源?参考答案比较开放,想到的用户特征越多、挖掘/学习方法可操作性越强越好,通过不断追问挖掘/学习方法细节了解其掌握程度主要考察点(被面试人越能抓住这些
17、点,则说明对题目把握越到位)1 问题分解思路2 常用挖掘/学习方法的掌握,如不同分类、聚类、关联、组合学习等方法题目2 关键字推荐算法有A1A10 10个广告商,每人买了一组词。第A11个广告商,自己也买了一组词。如何给他推荐新的词?广告商角度的信息:广告商的行业,自我描述,网站,等等。词角度的信息:被谁买过,网民搜索的频率参考答案1. 答出1-2种推荐算法为佳2. 能够利用上广告商维度的信息,利用相似的广告商喜欢相似的词3. 能够利用上该广告商自己的信息,即买了一些词后,它会更倾向买类似的词。4. 能够利用上网民的信息,在推荐时考虑到受网民的欢迎程度。主要考察点(被面试人越能抓住这些点,则说
18、明对题目把握越到位)1. 答出1-2种推荐算法为佳2. 能够利用上广告商维度的信息,利用相似的广告商喜欢相似的词3. 能够利用上该广告商自己的信息,即买了一些词后,它会更倾向买类似的词。4. 能够利用上网民的信息,在推荐时考虑到受网民的欢迎程度。5. 选用正确的机器学习算法例如相似判断时采用KNN或者聚类,或者相似度度量,推荐时采用常用推荐算法和分类算法。题目3 svm算法考察Svm(支持向量机)算法考察1 svm基本原理2 优势和劣势3 和kernel method的联系4 linear和kernel method的区别参考答案1. 能够答出结构风险最小化和经验风险最小化,凸规划等svm原理
19、部分。2. 小样本上的优势3. 能够答出为什么要做kernel projection,有哪些kernel,效果有什么差异4. 能够答出linear和kernel的区别,性能上的优劣等等。主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)1 原理部分,能够清晰的表述svm基本原理2 对kernel method有清楚认识3 对svm应用中的优劣点有理论认识,有尝试,有体会。能给出改进和规避建议。题目4 如何识别B2B,B2C,C2C等广告类型如何设计算法,识别B2B,B2C,C2C类广告,以及如何评估准确,召回。参考答案开放式问题,无固定答案主要考察点(被面试人越能抓住这些点,则说明对
20、题目把握越到位)能提到一些常用的文本分类方法即可,如SVM,naïve bayes等另外可能有一些其他方法,如人肉构造category term list,利用搜索引擎摘要,甚至使用开源分类软件等。总之考察其是否有涉及策略方面的学习经历。题目5 点击影响因素分析对于搜索广告:1 影响用户是否点击广告的因素有哪些2 如何利用这些信息来改进广告展现提高收入3 如何提高用户体验参考答案1 从广告属性、页面环境、用户状态等方面分析,考虑时间、地域等环境因素2 考虑这些因素之间的组合关系,广告与页面的语义相关性,广告与用户兴趣相关性3 与一次收入相关的是价格和点击率,利用历史展现点击信息进行点击率预估,通过优化(点击率*价格)来促使收益优化;4 与一天收入相关的还有流量和预算,利用历史展现消费信息进行流量和预算估计,通过投放规划来促使全局收益优化5 与用户体验相关的是点击率,优化用户体验可以提高点击率的权重,可以对排序方式进行变形主要考察点(被面试人越能抓住这些点,则说明对题目把握越到位)1 考察分类和归纳能力,2 考察问题的抽象能力3 能理解贪心和全局优化的区别4 了解权重调整的一般方法题目6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《家装知识讲座》课件
- 《癫痫本科》课件
- 《家族式增员》课件
- 单位管理制度合并选集【人员管理篇】
- 单位管理制度范例选集人事管理篇十篇
- 《投资经济学》课程教学大纲
- 《现代经济学》课程教学大纲1
- 《小学分数教学》课件
- 《电子元件基础知识》课件
- 《企业环保管理》课件
- ISO 56001-2024《创新管理体系-要求》专业解读与应用实践指导材料之15:“6策划-6.4创新组合”(雷泽佳编制-2025B0)
- 广东省广州市天河区2022-2023学年七年级上学期期末语文试题(含答案)
- 标准厂房施工方案
- DBJT45T 037-2022 高速公路出行信息服务管理指南
- 港口码头租赁协议三篇
- 浙江省绍兴市柯桥区2023-2024学年高一上学期期末教学质量调测数学试题(解析版)
- 项目部实名制管理实施措施
- 颞下颌关节疾病试题
- 福建省厦门市2023-2024学年高二上学期期末考试质量检测化学试题 附答案
- 非甾体抗炎药围术期镇痛专家共识(2024 版)解读
- 安全使用文具班会课
评论
0/150
提交评论