Java软件开发

文章目录

  1. 转载文献地址: https://blog.csdn.net/qq_38676218/article/details/83031794#commentBox
    从秋招开始到现在签完三方,我细想了一下我经历的多次面试,总结一下面试的问题和技巧。(菜鸟一枚,那种想进BAT类的大公司就不要再看我的文章了)

技术面技巧:
技术面的套路一般首先问基础,然后问项目。

第一点:如果问你问题,你一定要答得尽量完整,然后可以扩展的就扩展。比如问你栈和队列的区别,你如果只答“栈先进后出,队列先进先出”,这样基本很多人都能说出,这不能成为面试官在百多人中选你的理由,你可以答“栈一般会用在括号匹配这种问题中,在操作系统中主要用栈来解决中断请求,队列一般是优先队列,操作系统中进程切换的时候会用到”,这样回答会使面试官觉得你还懂其他的东西,也会用东西解决问题。

第二点:尽量诱导面试官往你熟悉的知识方面来问。如果你回答问题就只答答案,不做相应的扩展或延伸,那面试官就不知道该问你什么好,可能问的问题你都答不上来。比如面试官问你“你会用SpringMVC+Spring吗?”,如果你不是特别熟悉的话,千万别只回答一点点它的内容,或者说我不太熟悉,你可以说“我只是简单的了解了一点,我一般用SpringBoot做项目开发,SpringBoot它…(SpringBoot的优点)…如果贵公司用的是SpringMVC这个框架的话,我可以学(要表现出的好学的一面)”。即使他问的问题你可能不会,如果有别的可代替方案,一定要说出来。

第三点:有时候技术面伴随着手撕代码,如果你因为紧张,暂时写不出来,或者你真的写不出来,写不出代码没关系,“我很少手写代码,可能现在有些紧张,一下不知道怎么写,但我可以讲一下我的思路。”然后具体讲一下你的思路。比如让你写快速排序,你写不出来,你可以讲一下它是怎么实现了,有纸的话可以写个小例子什么的,要证明你是会的。如果你写了一段代码,但是你不确定有没有漏掉什么,或者考虑的不全面的,你也可以拿着代码再讲一遍思路。

第四点:如果问的是项目,那么你一定要特别熟悉这个项目,即使是团队合作,你也要大致清楚别人做了什么,他们的代码你也要看看,了解一下。项目问题一般会问,数据库有几张表?这些表有什么关联?前端用了什么技术?后台用了什么技术?这些技术有什么优点,为什么会用这种技术?有没有需求分析?在项目中遇到了什么难题?解决了没有?你在项目中是怎样一个角色?你做了什么?如果你是队长的话,你觉得你队长做的怎样?如果你是队员,你觉得队长怎么样,你自己做的怎么样?

分享一个面试经历:

面试官问到了Java里你熟悉的集合类有哪些,它们之间有什么区别?然后我答了一部分,貌似没答全,就补了一句“平常都用那几个,其他的没怎么用过”,之后问了抽象类和接口的区别,我答了好几点,但是没答全,面试官小哥哥很好心地提醒“还有呢?”,我挠挠头,“不好意思,暂时只记得这些,还有什么?”,小哥哥特别好心地帮我补全了。然后还问了什么是SQL注入?怎样防止SQL注入?结果我只答出了一种防止SQL注入的方法,小哥哥说还有一种,我说不记得了,直接反问,另一种是什么?(嗯,估计是那种求知的目光打动了他)他又给我补充了。之后还问了什么是数据库索引(感觉这个很多面试都会遇到),我答出来了。然后问了一些简历上项目的问题,我答的不错,然后就过了。(到这得感谢那个小哥哥一下,他让我不再害怕面试,嗯,我超级喜欢那个小哥哥,他让我面试过了?)

集体面技巧:
就是几个人做一起,面试官挨个问问题的那种,先自我介绍,把自己的学习经历带一点,然后讲自己做的项目。

第一点:要认真听别人说话以及面试官会问的问题,轮到自己的时候可以讲一下面试官可能问问题的部分。我是第三个自我介绍的人,前两个人面试官有问他们项目中遇到的问题,然后我介绍完项目后就直接讲项目中遇到的问题以及解决的办法(这样会给面试官一个好印象,因为你省了他重复问问题的时间,也说明你有在认真听别人说话,不是像僵尸一样坐在那里),他就没有再问这个问题了。

第二点:抓住问题的关键点,回答要短小精悍,也可以稍微补充一下。为什么要短小精悍,因为群面时间一般最多是一个小时,人有4-5个的话,面试官没时间听你讲一通,会耽误其他人的时间。集体面会问一个问题,然后问大家的看法,这时候第一个说的人并不一定就能赢得面试官的好感,你要先抓到问题的关键点,然后讲关键的部分,不要扯一些其他不太重要的东西进来,这样会耽误大家面试时间,也会给面试官留下这个人不会总结的不好印象。

第三点:要对自己有信心,想好自己有什么优势是别人所没有的。我运气不太好,有两次群面都是我一个本科生对几个研究生(心情复杂),不过这也不一定不是好事,因为面试官不会拿你和研究生做对比(没有对比就没有伤害),当然,有个面试官很直接地问我:“他们几个都是研究生,你觉得你和他们比有什么优势?”,当时我心里贼乱了,优势?然后嘴里蹦出来四个字“有责任心”,说完自己都觉得不是?,然后面试管让举了个例子,我就说了一下我以前在学生会的干部经历,可能说的东西他挺感兴趣的,我终面就过了。

重点来了,面试问题有哪些?

  1. Java集合类有哪些?

建议看这篇文章 https://www.cnblogs.com/LittleHann/p/3690187.html,主要是答有哪些类,重点讲一下常用的那几个类以及它们的使用场景,以及一些区别,比如 ArrayList 和 LinkedList 的区别,HashMap 和 HashTable 的区别。还有里面线程安全的类有4个:vector,stack,hashtable,enumeration。

  1. HashMap 和 HashTable 的区别。这个真的是5次有3次面试会问。

建议文章 https://www.cnblogs.com/heyonggang/p/9112731.html,一般情况下用 HashMap 比较多,HashTable 已经过时了,被ConcurrentHashMap取代了。

  1. StringBuffer 和 StringBuilder 的区别。同2一样问得多。

建议文章 https://www.cnblogs.com/su-feng/p/6659064.html。

  1. 创建线程的方法。

建议文章 https://www.cnblogs.com/3s540/p/7172146.html

  1. 如何实现线程同步。

建议文章 https://www.cnblogs.com/XHJT/p/3897440.html

  1. 数据库索引

建议文章 https://www.cnblogs.com/xiaoming0601/p/5956077.html

  1. 页面加载缓慢的原因,有什么解决办法

从前端到后台分析,可能是大张的图片过多,样式复杂或者JS代码复杂了,需要加载的脚本多了会使页面加载缓慢,或者请求过多,后台可能是业务处理繁琐,查询语句不好,数据库设计不好等等,其他我没说到的,大家可以补充哦,下面的链接也有一些原因和解决办法。前端主要优化脚本,图片可使用分辨率低一些的,后台主要优化数据库和SQL语句。

https://blog.csdn.net/mysouling/article/details/51210297

https://www.cnblogs.com/blogNYGJ/p/8948197.html

  1. 讲一下Spring框架(或者IOC,AOP,这也是笔试容易遇到的问题)

建议文章 https://www.cnblogs.com/doudouxiaoye/p/5693399.html

  1. 运行时异常有哪些?(这个问的不多)

建议文章 https://www.cnblogs.com/diegodu/p/7298882.html

  1. 存储引擎(有的公司会问到)

建议文章 https://www.cnblogs.com/domi22/p/8059403.html

1. 松耦合

  1. 参考文献
    举个简单的例子啦
    有一百人分成10个团队做开发
    你写了一个类A,供其他人调用,怎么办?
    简单的方法就是把这个类打成jar包,然后给他们
    他们就A a = new A();
    然后调用a的方法。
    但是有一天,A类升级了,怎么办?
    再打jar包,再给其他9个组每个组发一份,告诉他们,替换一下以前的jar包。
    有可能你的a中,方法签名还发生了变化,那么他们就得重新改代码来适应你新的jar包了。
    如果这样的事频繁发生呢,那么你就等着挨骂吧。
    这就是紧耦合,他们的程序紧密地耦合着你的程序。
    如果是松耦合的话,我想我可能会定义一个接口给他们,然后IOC的方式将实现类给他们,最好是远程的通过webservice的方式进行调用,这样我的A更新了,只需要切换掉远程的A的实现类,他们根本啥也不知道,啥也不用改,就更新了功能,怎么样,是不是很方便?
    这就是松耦合
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值