下面是小编为大家整理的程序员面试一般问什么问题【完整版】,供大家参考。
程序员面试一般问什么问题
一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,今天小编整理了程序员面试一般问什么问题供大家参考,一起来看看吧!
程序员面试一般问什么
一、Java
1. 多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?
2. Java的AQS是否了解,它是干嘛的?
3. 除了synchronized关键字之外,你是怎么来保障线程安全的?
4. 什么时候需要加volatile关键字?它能保证线程安全吗?
5. 线程池内的线程如果全部忙,提交一个新的任务,会发生什么?队列全部塞满了之后,还是忙,再提交会发生什么?
6. Tomcat本身的参数你一般会怎么调整
7. synchronized关键字锁住的是什么东西?在字节码中是怎么表示的?在内存中的对象上表现为什么?
8. wait/notify/notifyAll方法需不需要被包含在synchronized块中?这是为什么?
9. ExecutorService你⼀般是怎么用的?是每个service放一个还是一个项目里面放一个?有什么好处?
二、Spring
1. 你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?
2. 如果一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现?
3. Spring的声明式事务 @Transaction注解一般写在什么位置? 抛出了异会自动回滚吗?有没有办法控制不触发回滚?
4. 如果想在某个Bean生成并装配完毕后执行自己的逻辑,可以什么方式实现?
5. SpringBoot没有放到web容器里为什么能跑HTTP服务?
6. SpringBoot中如果你想使用自定义的配置文件而不仅仅是application.properties,应该怎么弄?
7. SpringMVC中RequestMapping可以指定GET, POST方法么?怎么指定?
8. SpringMVC如果希望把输出的Object(例如__Result或者__Response)这种包装为JSON输出, 应该怎么处理?
9. 怎样拦截SpringMVC的异常,然后做自定义的处理,比如打日志或者包装成JSON
三、MSQL
1. 如果有很多数据插入MYSQL 你会选择什么方式?
2. 如果查询很慢,你会想到的头一个方式是什么?索引是干嘛的?
3. 如果建了一个单列索引,查询的时候查出2列,会用到这个单列索引吗?
4. 如果建了一个包含多个列的索引,查询的时候只用了头一列,能不能用上这个索引?查三列呢?
5. 接上题,如果where条件后⾯带有一个 i + 5 < 100 会使用到这个索引吗?
6. 怎么看是否用到了某个索引?
7. like %aaa%会使用索引吗? like aaa%呢?
8. drop、truncate、delete的区别?
9. 平时你们是怎么监控数据库的? 慢SQL是怎么排查的?
10. 你们数据库是否支持emoji表情,如果不支持,如何操作?
11. 你们的数据库单表数据量是多少?一般多大的时候开始出现查询性能急剧下降?
12. 查询死掉了,想要找出执行的查询进程⽤什么命令?找出来之后一般你会干嘛?
13. 读写分离是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有什么关系?
14. 分库分表有没有做过?线上的迁移过程是怎么样的?如何确定数据是正确的?
四、Linux命令
1. 日志特别大只想看最后100行怎么弄? 如果想一直看日志的持续输出,用什么命令?
2. 如果日志一边输出,一边想实时看到有没有某个关键字应该怎么弄?
3. grep如果忽略大小写应该怎么弄? 正则表达式呢?
4. vim往下一行是什么键?往下30行呢? 跳到文件末尾一行是什么? 跳回来是什么? 向后搜索是什么?
5. 如果有个文本文件,按空格作为列的分隔符,如果想统计第三列里面的每个单词的出现次数应该怎么弄?
6. 如果把上面的出现次数排个序应该怎么弄? 想按照数字本身的顺序而不是字符串的顺序排列怎么弄?
7. Linux环境变量是以什么作为分隔符的?环境变量通过什么命令设置?
8. 给某个文件权设置限比如设置为644 是用什么命令?这个6是什么意思?
9. Linux下面如果想看某个进程的资源占用情况是怎么看的?系统load一般多少?如果一个4核机器,你认为多少load是比较正常的?top命令里面按一下1会发生什么?
10. top命令里面,有时候所有进程的CPU使用率加起来超过100%是怎么回事?
11. 还有哪些查看系统性能或者供你发现问题的命令?你一般是看哪个参数?
12. 想看某个进程打开了哪些网络连接是什么命令?里面连接的状态你比较关心哪一种?
五、监控、稳定性
1. 业务日志是通过什么方式来收集的?
2. 线上机器如何监控?采用什么开源产品或者自研的产品?它是分钟级的还是秒级的?
3. 如果让你来想办法收集一个Java后端应用的性能数据,你会在意哪些面? 你会选择什么样的工具、思路来收集?
4. 一般你调用第三方的时候会不会监控调用情况?
程序员面试时怎样穿衣服
面试的中的第一印象是绝对影响整个面试成败的一个关键元素,而影响第一印象的关键元素则是一个人穿着打扮,因此面试时的装束绝对马虎不得。
因为工作的关系,我就面试过无数的青年男女穿着不太适合面试的衣服就前来面试。例如,女生穿着裙子但是脚上却穿着运动鞋,有的女生还特意穿着超短裙,还有穿着网状丝袜的性感打扮的也有。男生则有的穿着花衬衫,或者比较鲜艳色彩的衣服,至于穿着T恤或者运动服就来面试的则男女楷有,而且多不胜数。
对于那些去面试的青年朋友,我的建议是一定要“轻松简洁”。“轻松”就是一定要轻装上阵,但是并非是T恤牛仔裤;“简洁”就是一定要色彩简单朴素。
衣服颜色还是保守一点更为妥当,也许你很时髦,也许你很喜欢最新的流行色彩,但是选择中性简约色调的服装才是最明智的。其实,如果幸运地面试成功而获得新工作的话,你在上班之后再打扮得时髦一点也不迟啊。
简单朴素的衣服颜色可以让人看起来比较稳重优雅,太夸张的衣服色彩会给人一种很轻浮的感觉。因此无论是男生还是女生都应该把自己身上的颜色维持在两个至三个颜色,而千万不要过多。
对于女生来说,在挑选衣服方面则容易得多了,简单朴素才是重点,只要符合简单朴素这个重点,几乎如何打扮都不重要,哪怕是牛仔裤也并非不可。
很多女性误以为穿着漂亮会引起主管的注意,因此而提高获得应聘的机会,其实这完全不尽然。如果,遇到女性主管负责面试,穿着漂亮会遭妒嫉而降低了自己获聘的机会;如果是男性主管,除非这位男性主管另有遐想,否则往往会视之为花瓶而担心应聘者的能力。因此,女生在面试时则更加应该穿着比较简单朴素。除了简单朴素之外,我没有其它的建议,只是要求女生除了运动装和运动鞋之外,其它装束基本都可以,因为简单朴素已经是女生面试的一个最重要的穿着基本原则。
最后特别要一提的是,男生恰当的穿着和良好的仪表,如果遇到一个女性主管的话,被聘请的胜算机会几乎高于80%,但是女生即使穿着高贵漂亮,或者花枝招展,如果遇到一个男性主管的话,被聘请的胜算机会也仅仅是50%而已,而相反穿着较保守和简洁的服装则可以提高胜算的机会。
程序员面试技巧有哪些
1、简历
面试阶段简历都是需要准备的,简历可以说是在面试中非常重要的一环。简历上需要呈现的内容有:常规的个人信息、掌握的技术方向是JAVA、Python还是PHP等等要写明、写清工作经验、项目介绍(这个很重要,也是面试官着重提问的地方,所以要对自己做的项目了如指掌,细节方面一定要重视,着重写自己参与的那一部分)。
2、适当的自我介绍
面试环节中都有自我介绍环节,适当的自我介绍可以提升面试官对你的印象,所以一定要提前准备好自我介绍。自我介绍中,简单介绍个人信息,个人信息主要通过简历展示,其他建议多说下技术特点和工作经验或者个人能力等。在无提问的情况下建议时间控制在三分钟以内,不要过于啰嗦简单介绍即可,如果面试官有疑问则会主动提出。
3、对应聘公司提前了解
面试前建议提前了解下面试的公司,一方面了解企业的发展前景看自己是否更有发展空间,另一方面也要看看企业整体的技术方向和自己是否适合,到企业后是否能有提升等等。在面试过程中如果对企业整体的发展方向、行业方向以及技术方向都有所了解和面试官的问答当中也会更顺畅。
4、专业技术
专业技术的考核主要是体现在笔试部分,所以在面试之前刷一些经典的面试题是很有必要的,而侧重点是依据每个公司的要求要有所变动。当我们看到每个公司的招聘信息时,要特别注意一下职位要求,入职后参与的项目是哪些。从职位要求上提炼该公司面试官面试时的技术侧重点不失为一个很好的办法。
5、常见问题
常见问题就比较杂了,例如个人爱好、为什么选择我们公司、对薪资要求等等,这些问题看似常见,但是也建议要好好准备,根据企业不同准备也不同。一方面要说出自己真实情况,另一方面又要适应岗位要求。例如爱好问题,建议如实回答但是爱好不要影响工作等。
6、良好的状态
这点看似不好准备,但是良好的状态直接影响这面试流程。切记说话是要不紧不慢,平心静气,条理清晰。
表达能力绝对是面试的时候重要的考察项目。咱们做的是程序员这一行,讲究的是团队协作,不是写作、画画,一支笔、一个人就行了,一个表达能力不行的程序员,要来又有什么用呢?
除此之外,就是保持良好的心态。不要把面试当作面试,当做一次技术交流,把面试的心态从我要找到一份工作转变为我要通过面试去发现不足、提升自己,这样就会平和多了,即使失败也不会有太多失望的感觉。
以上给出几点程序员面试需要准备的内容,程序员面试阶段做好提前准备好,认真对待每一个细节。