技术面试 - Java SE

背景:秋招 有些同学 没找到offer

1.自己知识储备不足

2.准备OK,但是仍然没找到offer

面试技巧(重点)、代码讲解

招聘岗位10, 50个人 : 10 + 40

不会脱颖而出

主题: 出奇制胜

1.反对和所有应聘者 千篇一律

积累: 阿里巴巴 编程规范 , 《effective java》

2.反对和所有《面试宝典》 千篇一律

建议: 只看宝典里的题目,不看答案(答案自己写)

只看题目 + github/知乎/博客

线程通信 wait()、notify()/notifyAll()

Semaphore、google guava类库Monitor

3.源码级解决问题

产生一个问题?百度、谷歌、问老师。

面试官问: 请讲讲ArrayList如何库容的?

我最初看书(看博客、文档),上面它的底层是动态数组,会在add()时 如果发现已满,则自动扩容1.5 。我还查阅了源码进行了验证,发现是在数组已满扩容,并且是通过 位移运算符扩容。

int newCapacity = oldCapacity + (oldCapacity >> 1);

4.找对时机,秀技能

每个人都有一些 独到的经验,要想办法在面试的时候 讲给面试官。

“聊聊自己的项目经验” ,讲项目,讲完的时候 加一句:我在做这个项目的时候 曾经遇到了一个bug,当时ArrayList.asList()返回一个List,当时通过阅读源码 发现 返回的LIst不是 Collection中的那个List。

5.比较通过的 秀点

优化类(JVM、SQL优化)

jvm优化:1.项目做完时,我用jmeter进行了压力测试,结果发现相应时间太慢(或者内存利用率太高) ,然后我用jvisualvm分析了下JVM的内存情况。分析后,进一步发现项目中的小对象太多了,并且发现这些小对象都是生命周期比较短的对象。然后我猜测可能就是由于短对象太多,造成了堆中新生代容量不足,进而让很多短对象逃逸到了老年代中。这样一来,新生代和老年代中的对象都会很多,就会加速GC的回收频率,从而降低系统的性能。对此,我调大了新生代的内存大小,并且调高了新生代 逃逸到老年代的 阈值。之后再测试,发现性能平稳了许多。

PS:以上短短200字,就告诉了面试官你有性能测试的良好习惯、会发现问题、分析问题,并且会JVM调优!

2.项目做完时,我用jmeter进行了压力测试,结果发现响应时间太慢。然后我用mysqldumslow工具查找到了项目中执行时间最长的那个SQL语句,因此猜测是这条SQL的性能太低,拖累了整个系统。然后我用explain查看了SQL执行计划,发现这个SQL根本没有写索引并且是大表驱动了小表,所以特别慢。之后,我给它后面的where查询字段加上了索引,并且改为了小表驱动大表。然后再次测试,响应时间就缩短了很多。

PS:这个秀点是“SQL优化”,具体流程是:定位慢SQL->使用explain查询SQL执行计划,用于分析SQL执行慢的原因->SQL优化。上述中的“小表驱动大表”等是SQL优化时的术语。

算法类的:字符串算法 (KMP算法)

6.技术沉淀

数据支撑: github、博客、专栏、微信公众号、项目发布到阿里云

7.大厂的区别

bat ,美团,字节调动,google facebook

数据结构和算法、操作系统、网络、设计模式、分布式、逻辑思维(8+11 ?)

8.心态建设

回答正确,但被面试官“否定”

1.答案来自于面试宝典,千篇一律

2.面试官自己在秀技术 ,调整好心态,不要受干扰。

正常面试官: 引导你来回答,而不是想方设法吓唬你

有没有用过List? 哪些常见子类?数组?动态扩容,不越界?

3.如果问到 自己不会的?一定要答出自己的想法/答类似的框架, 虽然没用过这个新框架,但是我用过同类产品,并且相信他们是差不多的,然后就答这个同类产品的 实现原理。

mybatis \jpa

新dao框架 ? 映射文件/注释: 实体类-表, 然后通过框架本身的api的进行crud…

MQ:rabitmq rocketmq kafka\新MQ

颜群微信157468995

技术面试 - Java SE相关推荐

  1. 什么是Java SE、Java EE、Java ME?

    什么是Java SE.Java EE.Java ME? JDK(Java Develpment Kit)是Java开发工具包,包括Java程序的编译.调试.运行及类库,至今发布的最高版本为6.0,Su ...

  2. Java SE 基本介绍上

    文章目录 一,概述 1.1 开发场景 1.2 应用领域 1.3 技术体系 1.4 特点 1.5 开发工具 1.6 运行机制&过程 一,概述 1.1 开发场景 SSM Spring 轻量级容器框 ...

  3. Java SE 基础(一)

    Java 0.基础内容 1.程序 计算机在执行某些操作或解决某些问题时,而编写的一系列有序指令的集合 2.java历史 1995年发布第一版 java 8.java 11.java 16为长期支持版 ...

  4. Java SE基础:计算机组成与Java概述

    文章目录 第一章 概述 1.1计算机组成部分 1.2人机交互方式 常用DOS命令 1.3 计算机语言 机器语言 汇编语言 高级语言 1.4 软件与软件开发 软件开发 软件开发岗位 1.5 Java语言 ...

  5. 以技术面试官的经验分享毕业生和初级程序员通过面试的技巧(Java后端方向)...

    本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利. 毕 ...

  6. 看BAT技术面试官如何挑选Java程序员

    又到一年一度的跳槽求职高峰季,很多人问我,你们公司还需要人么,你们用的技术栈是哪些,有哪些是你们比较关注技术重点? 没错,作为负责技术面试的我,面对数十甚至上百封简历,肯定要做一轮筛选.究竟哪些技术点 ...

  7. 年底了,如何准备 Java 初级和高级的技术面试?

    作者:hsm_computer 来自:cnblogs.com/JavaArchitect/p/9032323.html 本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一 ...

  8. 推荐一个很牛逼的 Github 项目:本人历时半年完成的【Java 面试 + Java 后端技术学习指南】,已拿大厂offer

    今天给大家分享一份[Java 面试 + Java 后端技术学习指南]:一份通向理想互联网公司的面试指南,包括 Java,技术面试必备基础知识.Leetcode.计算机操作系统.计算机网络.系统设计.分 ...

  9. 顽石系列:Java技术面试

    顽石系列:Java技术面试 JDBC相关 1.Statement与PreparedStatement的区 别,什什么是SQL注⼊入,如何防⽌止SQL注⼊? PreparedStatement支持动态设 ...

最新文章

  1. java 实体 text字段,如何在Java中修剪对象的某些字段?
  2. mongodb[三] 文档操作:插入、更新、删除
  3. ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值
  4. 经典C语言程序100例之四七
  5. 太原学计算机的职高,山西太原职高学校排名
  6. python进阶(课程学习笔记)
  7. GPU版本的Keas安装
  8. Pycharm配置Anaconda
  9. HNOI2004 郁闷的出纳员(Splay)
  10. python字体和图片合成
  11. Python:罗马数字转整数
  12. 电梯口的美团外卖与饿了么
  13. java中文转拼音_java中文转拼音
  14. vdsm:vdsm-client 命令行使用演示
  15. pcb只开窗不镀锡_关于pads中 PCB铺铜开窗镀锡 的操作
  16. 监控电脑屏幕python
  17. 十五”期间广东职业教育发展概况
  18. PVE(Proxmox VE) 显卡直通
  19. 面向初学者的3D游戏着色器————织构化
  20. AppleScript 脚本让 Mac 唱生日快乐歌

热门文章

  1. 测量50A以上电流:意瑞隔离集成式电流传感器CH704
  2. LeetCode 593. 有效的正方形
  3. 三人行discuz采集论坛发贴王破解版
  4. 一秒快速抠图一秒图片高清处理
  5. 【今日CV 计算机视觉论文速览 第142期】Wed, 10 Jul 2019
  6. python公司面试题集锦 python面试题大全
  7. STM32开发 -- Keil使用(1)
  8. 【数据库学习笔记】Day06 - 关系数据库规范化理论
  9. 光耦电路故障诊断及工作特性深入分析
  10. CTFshow——PHP特性(下)