预约的视频面试时间是中午12点,不过面试官并没有准时到,拖了大概5、6分钟吧。Zoom会议上写着xxxJava工程师初试。

  面试官戴着口罩,并没有露脸,看起来与我年龄相仿,感觉很年轻。

  在我按着既有的思路进行自我介绍之后,他直接就开始对我进行技术面试了,直接就开始提问Java相关基础知识了。和我上次的面试体验不同,上次最初主要是针对项目进行了提问。

  所以我有点措手不及,其实从zoom上的“初试”和面试官的年龄、神态可以推测出来这次只是进行一个简单的Java基础技能的考核。

  反观在自我介绍的时候,我对自己的项目经历和工作经历介绍的有点太多了,讲了大概有10多分钟吧。这个在后面要调整一下,最初的自我介绍要简单一点儿,后面如果问到了,可以细说。

  这样可以把时间都留在技术交流上,我也不用口干舌燥了。

  下面是对一些面试题的回顾与总结,有一些答的不好甚至没有回答出来。不过这些问题都囊括在了一些比较经典的面试题集里面。

  问: 项目中用到的jdk是什么版本,在项目中有没有用过jdk1.8?Jdk1.8有什么新特性?

   答:

  1. 增加了default关键字,通过default修饰,可以在接口中定义具体的方法实现。
  2. 1.8中增加了lambda表达式,lambda就是匿名的内部类。
  3. 增加了函数式接口。
  4. 方法与构造函数引用。可以通过ClassName::methodName来调用类的方法。
  5. 局部变量限制。
  6. Date Api更新。
  7. 新增了流的使用,类似于一个高级版本的Iterator。
  8. 1.8中对hashmap进行了优化,底层使用数组+链表+红黑树实现。
  9. Objects方法新特性。

   参考文章:https://www.cnblogs.com/junrong624/p/11596191.html

  问:了解微服务吗?能说一下Spring Cloud组件有哪些吗?

   答:之前其实对这个有过了解,也看过相关文章,不过面试的时候却一点儿也想不起来了,尴尬。面试官问我脑海中没有这个组件的一幅图吗?其实还真没有,但是这提醒了我通过图来记忆不失为一个好方法。

  参考文章:https://blog.csdn.net/xunjiushi9717/article/details/91988479

  问:讲讲Java中的线程。

   答:其实这个问题问的比较大,比较宽泛,所以我一时还不知道从哪儿回答。所以我们先看后面的一些问题,其实他们也和线程相关。

  

  可以从以上几个方面去讲,但是也可以向面试官进一步询问,要求其提出更具体一点儿的问题,这样更好。

  问:讲讲volatile关键字?

  答:其实这是一个比较经典的问题,当初也看过相应文章,只回答了两点,一个是被此关键字修饰的变量,具备可见性,即可以在线程间共享,而且可以禁止指令重排序。

  面试官进一步问到为什么可以在线程间共享时,没有回答上来。其实很简单,是因为被volatile关键字修饰后,变量会被写入主内存,其他线程访问时直接从主内存中取,不从本地内存中取,所以可以共享。

  至于为什么可以禁止指令重排序,是因为被volatile修饰的变量,赋值后会建立一个内存屏障。

  参考文章:https://www.cnblogs.com/zhengbin/p/5654805.html

  问:线程的实现方式有哪几种?

  答:这个也算是比较经典的问题了。最基础的有两种,继承Thread类,重写run方法; 实现Runnable接口,重写run方法。第三种使用线程池。

  但是这里问到了线程池的参数大小是如何设置,这个没回答上来。

  参考文章:https://blog.csdn.net/oqkdws/article/details/80526370

  问:Java中的锁是否有了解?能否讲一下。Synchronized与lock的区别?

  答:前面的问题其实也问的比较大。

  1. Synchronized是一个关键字,可以修饰方法,代码块。Lock是一个类。
  2. 获取锁的线程执行完代码,会自动释放锁。线程执行发生异常,jvm会让线程释放锁;lock必须手动去释放锁。
  3. 获取锁的时候,使用Synchronized,其他线程必须等待前一个线程释放了锁才能获取;但是lock可以不用一直等待。
  4. 使用Synchronized的锁状态不可判断;使用lock可以判断。

  参考文章:https://www.cnblogs.com/xuxinstyle/p/9690316.html

  问:设计模式是否有了解?能不能讲几种工作中用到?

  答:最简单的有单例模式、工厂模式、模板模式、代理模式、发布-订阅模式,装饰者模式。

  其中单例模式问到了单例的写法有哪几种,答有两种,懒汉式和饿汉式。然后又问到了有没有安全点的写法,这里回答使用Synchronized关键字。不过关键字加在哪里回答错了,应该是加在new对象的代码块中,我却回答加在方法上,这点面试官还重复问了两次。

  经典的双重校验锁的单例模式代码,必须会写,如下:

public class SingleTon{

     //1.构造函数私有化

     private SingleTon(){};

     //2.定义变量

     private static volatile SingleTon s = null;

//3.提供对外的访问方法

public static SingleTon getSingleTon(){

   if (s == null){

        synchronized(SingleTon.class){

            if(s == null){

                s =  new SingleTon();

}

}

}

   return s;

}

}

  参考文章:https://www.cnblogs.com/renyuanwei/p/9203088.html

  其中提到了代理模式,这个要求结合业务场景讲一讲,这个没有讲清楚。

  问:深拷贝与浅拷贝是否知道?能否讲解一下?

  答:这块儿之前看过,所以还能说出几句。

  浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,为浅拷贝。

  深拷贝:对基本数据类型进行值传递,对引用数据类型进行,创建一个新的对象,并复制其内容,为深拷贝。

  总结:总体表现不太好吧,准备不足,很多问题都没答上来,后期对于这些问题还要重点学习与记忆。不过好在知道面试要问的总是那些问题,还没有超出范围。其次要学会观察面试官的角色与面试目标,不同的面试官考察与面试的内容可能会不同。

武汉中科通达软件Java工程师初试总结复盘的更多相关文章

  1. 北京南天软件java工程师面试题

    此试题为北京南天软件java工程师面试题(部分) 一.单项选择 (1)下列关于构造方法的叙述中,错误的是(C) A.java语言规定构造方法名与类名必须相同 B.java语言规定构造方法没有返回值,但 ...

  2. Java工程师:四个月小白变大咖,你能做到吗?

    你眼中的Java工程师是什么样子? 技术大牛?闷骚男?IT民工?没有女朋友?全是汉子?很邋遢?贼眉鼠眼? 今天,中软国际卓越工程师,Java精英班正式开课啦.你想看看他们都是一群怎样的人吗? 今天的武 ...

  3. Java工程师修炼之路(校招总结)

    Java工程师修炼之路(校招总结) 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易, ...

  4. Java工程师必备

    Java工程师必备 JAVA基础扎实,熟悉JVM,熟悉网络.多线程.分布式编程及性能调优 精通Java EE相关技术 熟练运用Spring/SpringBoot/MyBatis等基础框架 熟悉分布式系 ...

  5. 面试的角度诠释Java工程师(一)

    前言: 我相信每一个程序员都是为了生活而努力着的.很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥:也有很多人因为梦想和执着,奋不顾身融入这个职业:还有很多人因为被现实逼得太无奈,不得不为自己.为家 ...

  6. 中小公司的Java工程师应该如何逆袭冲进BAT?

    (1)80% Java工程师都有的迷茫 这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 之所以我用了三个 “很多” ...

  7. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  8. JAVA工程师技能要求

    近期做了个JAVA工程师分类, JAVA工程师可能是市场上最多类的程序员:   初级JAVA工程师的基本要求 Good basic programming skills 良好基本编程技能 Founda ...

  9. Java工程师研发面经大合集

    百度研发面经整合版 软件研发工程师 基础研发工程师 百度智能云 百度核心搜索部 百度今年的提前批有点奇怪,好像都不走流程,牛客上好几个百度内推的帖子,我投了几个,基本上都是百度智能云的,当然也有其他部 ...

随机推荐

  1. js原型链、继承、this指向等老生常谈却依然不熟的知识点——记录解析

    开始记录学习过程—— 很详细的解析过程——https://juejin.im/post/5c72a1766fb9a049ea3993e6 借鉴阅读——https://github.com/KieSun ...

  2. Dedecms 目标仿站的学习视频

    目标网站首页的初步仿制(实站仿站)http://vodcdn.video.taobao.com/player/ugc/tb_ugc_bytes_core_player_loader.swf 目标网站首 ...

  3. ORM框架 Mybatis、Hibernate、Spring Data JPA之到底该用谁,谁更牛*

    在持久层框架中无可厚非的就是mybatis了,但是也会经常被人问到为啥要用mybatis,为啥不用hibernate,jpa.很多人各级都是地铁爷爷看手机的表情,似乎从来没想过这个问题.“公司叫用我就 ...

  4. Hexo博客框架攻略

    前言 前天无意在b站看到up主CodeSheep上传的博客搭建教程,引起了我这个有需求但苦于没学过什么博客框架的小白的兴趣.于是花了两天时间终于终于把自己的博客搭建好了,踩了无数的坑,走偏了无数的路, ...

  5. 如何解决在electron里无法使用puppeteer的evaluate函数

    报错如图,只需要注释掉 index.html 含有 http-equiv="Content-Security-Policy 的 meta 标签就可以了.

  6. python + selenium登陆并点击百度平台

    from PIL import Imagefrom selenium.webdriver import DesiredCapabilitiesfrom selenium import webdrive ...

  7. iOS视频随笔(一)

    实例化对象init [AFNetworkActivityIndicatiorManager shareManager].enable = Yes; //开启网络请求指示 scrollView.cont ...

  8. C# 9.0 新特性之参数非空检查简化

    阅读本文大概需要 1.5 分钟. 参数非空检查是缩写类库很常见的操作,在一个方法中要求参数不能为空,否则抛出相应的异常.比如: public static string HashPassword(st ...

  9. (二)groupId和artifactId

    groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称. 域又分为org.com.cn等等许多,其中org为非营利组织,com为商业组织. 举个apache公司的tomcat项目例 ...

  10. Linux下,如何监控某个进程到底向哪个地址发起了网络调用

    Linux下,如何监控某个进程到底向哪个地址发起了网络调用 有时候,有些应用,比如idea,你发起某个操作时,其底层会去请求网络,获取一些数据. 但是不知道,请求了什么地址.举个例子,在idea中,m ...