简历是在一个招聘app上投的。感兴趣的童鞋也可以试试~
本来HR是准备直接过去面试的,但是由于本人不在本地原因,所以直接约了时间面试
面试官是技术部的Leader,总共面试时间是40分钟左右吧!
好的,下面就直接进入正题吧!
面试官问:之前看到过你做的笔试题,做的很好,想了解下你现在学的情况
答:可以
面试官问:大学的主修课程是Java吗?有学过其他课程吗?
答: 学过什么就说什么,主修是Java~
面试官问:现在的课程是不是还在学? (他大体意思就是就职时间吧)
答:学校的课程到这个月底结束,后面就没有课程了,现在就是要准备就业的。
面试官问:看过你以前写过Android,学的怎么样?
答:(这里如实说的,本来就是在校的学生,学了一年安卓,虽然主修Java,但是安卓比Java学的更好一些)
面试官问:那你自己觉得自己做前端多得好还是后端做的好一些?
答:(我说的后端,Java是最好的语言)
面试官问:看到你的简历上有做过app和Java前后端结合的项目,大致是怎么做的,用了哪些技术?
答:这个项目是去年的实训项目,在老师的带领下完成的(这里巴拉巴拉说了一些.....,我现在还觉得这里回答得不好,因为不管一个项目怎么做的,和谁完成的,你都要自己的想法说出来。)
面试官问:线程和进程的区别和联系
答: (这里我答的比较轻松,因为最近在复习这块的内容)
进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位
进程和线程的关系:
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
资源分配给进程,同一进程的所有线程共享该进程的所有资源。
线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
线程是指进程内的一个执行单元,也是进程内的可调度实体。
线程与进程的区别:
调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。
面试官问:你用过哪些线程的方法呢?(他说的没有这么直接,理解出来是这样)
答:run()、sleep()等等 这里我说了很多,列一下吧
sleep()方法属于Thread类,主要的作用是让当前线程停止执行,把cpu让给其他线程执行,但不会释放对象锁和监控的状态,到了指定时间后线程又会自动恢复运行状态
wait()方法属于Object类,与sleep()的区别是当前线程会释放锁,进入等待此对象的等待锁定池。比方说,线程A调用Obj.wait(),线程A就会停止运行,而转为等待状态。至于等待多长时间? 那就看其他线程是否调用Obj.notify().其优势显而易见,成为多个线程之间进行通讯的有手段!
join()方法在某些情况下,子线程需要进行大量的耗时运算,主线程可能会在子线程执行结束之前结束,但是如果主线程又需要用到子线程的结果,换句话说,就是主线程需要在子线程执行之后再结束。这就需要用到join()方法
yield()方法一个线程调用yield()意味着告诉虚拟机自己非常乐于助人,可以把自己的位置让给其他线程(这只是暗示,并不表绝对)。但得注意,让出cpu并不代表当前线程不执行了。当前线程让出cpu后,还会进行cpu资源的争夺,但是能不能再次分配到,就不一定了
isAlive():测试线程是否处于活动状态。
setPriority(intnewPriority):更改线程的优先级。
getName():返回该线程的名称。
currentThread():返回对当前正在执行的线程对象的引用。
面试官问:那你再说一下你用到了线程上的哪些东西,怎么用的?
答:这里我是举例说明,把自己做的项目搬出来说的
面试官问:静态变量、局部变量区别
答:这里窸窸窣窣说了一些。。
静态变量
静态变量也称作类变量,是在类之中,方法之外,以static关键字申明的变量,其独立在对象之外,有许多对象共享的变量。静态变量在对象产生之前产生,并长驻于内存,其在JVM关闭时销毁。
成员变量
成员变量也称作实例变量、属性, 申明在类之中,方法之外的变量,随对象销毁而销毁。
局部变量
在方法或语句块中申明的变量,生命周期只在定义的{}之中,不能跨方法或语句块使用。
面试官问:怎么理解抽象方法,做的项目里有用过吗?
答:abstract.... 抽象方法是用过的,和private一起,最近写的项目里没有怎么用到抽象方法,抽象方法里的私有方法用的比较多
一、使用abstract修饰符修饰的类被称为抽象类;
抽象类不能实例化对象,只能被继承;
二、使用abstract修饰符修饰的方法被称为抽象方法;
抽象方法不能有方法体,子类必须重写抽象类中所有的抽象方法;
三、抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类;
面试官问:队列和栈的不同点和相同点
答:之前学过数据结构,所以这块凭着记忆还能说上几句靠谱的
栈与队列的相同点:
1.都是线性结构。
2.插入操作都是限定在表尾进行。
3.都可以通过顺序结构和链式结构实现。、
4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
5.多链栈和多链队列的管理模式可以相同。
栈与队列的不同点:
1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
3.顺序栈能够实现多栈空间共享,而顺序队列不能。
4.栈先进后出,队列先进先出
面试官问:JavaScript的一些原理 现在更新的情况 面向对象中继承的实现
答:(当时电话听得不太清楚,所以说了几遍才知道在说JavaScript了)我说那天得到笔试题,里面有两道算法,三道脚本语言的题,但是第四题我是没做的,因为对JavaScript脚本语言其实不是很熟悉,只是在课余的时候看过这些,也不敢说都会。。emmm差不多就是这样说的
这里面试官其实在我回答得基础上,补充了一些东西,帮我引导
面试官问:Java的回收机制、虚拟机。。(类似这样的基础知识)
答:(我说的是其实大学里没有注重学底层知识,比如微机原理啊这类的,但是我在课余时间有看这方面的书,然后就大致的说了一下,然后就说了在实际编程中感受到的Java回收机制的优点,和C相比较)
这里附带一份关于回收机制的博客:Java回收机制
面试官问:get与post方法
答: (http协议请求... 后面说了一堆 什么安全、长度之类的。)
1.本质
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
2.服务器端获取值的方法
get方式提交的数据,服务器端使用request.QueryString获取变量的值
post方式提交的数据,服务器端使用request.Form获取数据
3.安全性
get方式安全性低,post方式较安全。但是post方式执行效率要比get方式差一些。
4.机制
get是把参数数据队列加到提交表单的action属性所指的URL中,如:http://www.xxx.com?sessonid=db23434&name=hongten&age=20。在URl中,值和表单南日各个字段一一对应,并且这些在URl中对用户来说是可见的,即用户时可以看到的。如:name=hongten。
post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到action属性所指的URL地址,对于用户来说,这是透明的。
5.大小
URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。
对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。
由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制。我们还需要注意:
1).IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。
2).IIS 6.0默认上传文件的最大大小是4MB。
3).IIS 6.0默认最大请求头是16KB。
IIS 6.0之前没有这些限制。[参2]
总结:
one:get方式的安全性较post方式要差一些,所以,包含一些重要的信息的话,简易使用post数据提交方式
two:在做查询统计的时候,使用get方式要更好一些;而在做数据的添加,修改或删除操作时,建议使用post数据提交方式
面试官问:实例化对象的方式除了new以外,还没有什么其他方法?
答:
面试官问:重载和重写的区别?
面试官问:抽象类和接口的区别?
答:抽象类:
接口:
面试官问:有没有了解过node.js
答:我说的是去年就在用了,但是也是初级,不能说很熟悉它
面试官后面说的就是一些闲聊吧,然后说了一些他们公司的情况,还有我的方向性的一些问题,整体给我的评价就是基础还是可以,但是应用上要比较弱一些,最后也问了 我还没有什么想问他的? 我问的如果我去公司上班,有不懂的地方,有没有同事之类的教一下。。这样 ,其实还有更好的问法吧,但是我认为只是第一次,说了这些,他应该大体是有数的,并且我也是刚毕业的大学生,更应该谦虚一点,而不是张口就要求什么吧。
面试官人很好,在问问题的过程中,也在我的基础中做了一些技术上的补充和解释,我个人觉得是有很好的帮助的,最后就是等他和他的部门商定再通知我后面的情况,最后说了谢谢。
以上就是大致的面试对话,不管有没有成功,有了这次的总结,个人认为自己的理论知识还需要更加巩固和深入去了解,多看书、去写代码、还有多做项目,很多经验也是在项目开发中得到的。其次就是礼貌、谦虚很重要!
欢迎各位博友对我的总结提出更好的建议,多多指点,多多指教