一面:
1.自我介绍:
----学校,本科生,求职岗位,城市,籍贯
----用过的技术、写过的项目、具体到个人理解和实现、个人对于相关技术的心得
2.针对项目的问题
--写过除了java之外的项目嘛:回答js写过小游戏算吗 (这个问题二面的时候又问了一遍)
--我看你做的项目也有前端的,你是对前端有比较多的了解还是只是简单的用了
--java面向对象思想和javascript面向对象的区别
-----回来后查了这个问题。发现我明明就知道而且会这个问题。但是当时根本没反应过过来应该这么回答。这种情况,说不熟悉js,不好,应该回想一下平常自己用js的代码,能想出来多少说多少。如果当时想好了应该是这样的:
1.js是基于对象的,但是很少设计对象,我自己起码没用过,都是用的js内置的对象。js最主要的就是设计实现函数。而java,无对象不java,做什么都得依赖对象,写个最简单的helloworld都得设计类。
2.在HTML文档中,两种编程语言的标识不同,javascript使用来标识,而Java使用Applet来标识。
3.javascript与Java在浏览器中所执行的方式不一样。javascript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户,即javascript语句本身随Web页面一起下载下来,由浏览器解释执行。而Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码。
4.javascript与Java所采取的变量是不一样的。javascript中的变量声明采用弱类型,即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。Java采用强类型变量检查,即所有变量在编译之前必须作声明。
-----java面向对象思想的个人理解和体现
-------------这个问题因为上一个问题javascript的问题没了解,然后降低难度问的,但是我这时候已经非常紧张了,连java面向对象的三大特点都没说好,我自己说了一次封装继承多态,然后又说诶我怎么只想起来继承和多态,还有一个是什么来着。这时候应该整理思路。
就针对继承多态来说,但是我这时候为了尽快的说出点东西,就选择了最近在了解的mybatis来说,选了其中的java动态代理的运用。但是这部分其实没有完全吃透,说得不是特别流利,给人一种不好的感觉。这时候的更好的处理应该是 以自己最熟悉的项目为根基,就自己项目哪里用了,怎么用的,说清楚就好。然后开源项目源码里面的东西,可以作为一个拓展来展开说,但是视自己掌握程度和面试官态度来决定拓展程度。如果面试官表现出想往细一点听,可以说,否则稍微拓展一下就够了。
--项目中涉及安全的问题(我问具体哪方面后,提示sql注入)
我回答在每次自动生成sql语句后都要经过一个转义函数过滤,把非法字符转义了
----其实我也做了对跨域伪造请求攻击进行了处理,当时一下子没反应过来。
就说一下什么是CSRF攻击和自己用随机token防御了就可以了。
----项目开发中采用的版本控制工具
svn git了解不够,应该针对git深入了解,搭建一个个人博客
-----有没有线上能看的项目
没有。。。应该传上git去的,展现出code manage&review习惯
二面:
由于web岗来的人比较少,估计公司想一天面完,一面出来等了十分钟后直接带我去了一个应该是区域老大的人的办公司面试。
一进去之后老大表现的非常友好,而且胖胖的一看就是个大老板而且人看起来很好,我一下子就不紧张了。他说这两天进来面的都是女生,终于来个男生了,然后看了简历说这几天来得都是硕士,终于看见个本科生了,感觉运气还是比较好的。
一开始让介绍自己,说得跟一面的时候差不多。
然后问项目来源,我说有培训项目,有自己想写的,有老师的项目,其实应该尽量都说是自己想做的东西,展现出自己的想法。
有没有较深的调试bug经历,一些追的比较深的bug:
一时想不起来具体的问题,但是回答出处理这一类bug的经验:要从头到问由浅入深的一步步调试,确保前面的没有错再去钻牛角尖。当钻牛角尖钻久了还是钻不透,那很可能找bug的方向就已经错误了,自己已经形成了思维定势,很难找出bug来,这时候可以找身边的人,不管是老师还是同学都可以,让他们帮忙看一下,他们反而会更容易看出错误在哪里,因为他们没有思维定势,局外者清。相应的,别人有类似问题的时候自己也可以帮忙看一下,也会学到心得东西。
只做过java的项目嘛?其实大一做得C++桌面应用程序也可以说,毕竟也是一个大项目,虽然很不完善,但是还是写了很多代码学到很多东西的。尽可能的说,不管大小,谈谈自己的收获。也可以表现出自己的学习能力。
java是自学的嘛?看过java的什么书?
学校开过一门基础的课,但是讲得不深入。更多的都是后来自己学的,主要是在项目中边写边学。
平常的学习渠道:
github csdn 各种技术博客 直接买书
其实这时候应该回答上 实践 通过写来学,通过java编译器来学,编译器就是最好的老师,在实践中发现问题,再去搜索解决
个人兴趣爱好:
还是说喜欢看技术博客
生活上的话喜欢运动 足球 篮球
其实应该说喜欢在leetcode 等网站上刷编程题,很享受找出不同的更优的解答方法的过程。
自我评价:
进取
其实应该说很有想法,总能在同样的问题想到不同的办法,有自己独立思考的能力。比如说:刷编程题,搜出来的解法跟自己的解法的比较。
学东西喜欢总结,总结出心得。
接受、学习新的东西:学的快,怎么学的,用+总结+看别人经验+用+理解+自己实现+熬夜
努力。我不怕辛苦。年轻人不努力能干嘛呢,有活力。
代码洁癖、强迫症:比如说项目中要求严格测试
喜欢分享想法,通过分享跟大家搭建更好的关系,也能通过分享互相学习。
比如说,主动分享自己对于面试的心得,经验,分享资料,来共同学习,共同进步。
总结
这次面试得出得经验:
需要深入了解一些知识:
数据库、js、git等
在不太熟悉问题、紧张的时候,尽量回想自己写的时候用的时候得情景,当场总结,大胆说,能说多少是多少,说这就是我再当前情境下能想起来得个人理解。
面对面试官的问题,应该尽量在自己最熟悉的项目中找到例子展开细说,扬长避短。
表现出喜欢编程,编程有趣。
面试官最关注的东西归根到底还是学习能力、热情跟意识。
多投,多面,多失败,多碰壁。
就算是跟技术无关的问题也可以往技术上靠。