9.27面经

注:以下”答“均为本人在面试期间的完整回答,可能并不是标准答案,仅供参考,望周知!

  • 1、自我介绍,在校经历,成绩排名

  • 2、问项目(此处省略一万字)

  • 3、Java基础

    • 问:final关键字的作用?

    • 答:作用于类上代表可不继承、作用于方法上代表不可重写、作用于字段代表其值(引用类型为地址)不可改变

    • 问:final对于引用类型字段与值类型字段有什么不同?

    • 答:对于值类型字段,其对应值不能改变(如int);对于引用类型字段,其指向地址不能改变,但是地址中的值还是可以改变

    • 问:引用类型是什么?

    • 答:Java中基本都是对象来进行操作,其对应顶级父类都是Object的类型为引用类型

    • 问:如果一个Map使用final修饰,它会怎么样呢?

    • 答:(因为没使用过,因此思考了一会)Map中的存放的是一个个Entry对象...(深思中)...我感觉应该是阻止扩容吧,因为Map的扩容操作是新建一个哈希桶,然后将原引用指向新的哈希桶,加上final关键字代表引用类型地址不能发生改变,因此是防止Map进行扩容

    • 问:你在项目中有使用过嘛?这样有什么好处?

    • 答:我没有使用过,但是我一般都会为它指定初始容量,(幸好看过阿里开发手册,才能吹下半段)因为阿里开发手册上有谈到过,java.util包下容器(如ArrayList、HashMap)都应该尽量指定初始容量,防止其扩容所带来的性能损耗,因此加上final也是为了防止扩容造成性能损耗

    • 问:确实这样的!

    • 问:你能告诉我抽象类与接口的区别嘛?

    • 答:抽象类是使用abstract关键字进行修饰的类,可以被继承;定义为抽象类其中可以没有抽象方法,但是含有抽象方法的类一定要定义为抽象类;抽象类可以有构造方法,其目的是子类进行初始化时完成某些特定的操作;要继承抽象类,要么实现其中所有抽象方法,要么自身定义为抽象类;abstract关键字不能和static共用,因为static代表静态,其代表在编译期间已经确定,而abstract代表动态,其代表在运行期间才能确定,因此二者不能一起使用;接口是interface,使用implements关机找你实现接口,不能有构造方法(还没说完被打断,是我太啰嗦了???)

    • 问:接口可以定义不用重写的方法嘛?

    • 答:接口中成员的修饰符默认为public static final,成员方法的修饰符默认为public abstract,在JDK8中引入了默认方法和静态方法,即分别使用default关键字和static关键字进行标识,由于引入了这两种方法,导致可能造成很多公共代码无法重用,因此JDK9引入私有方法是必然的结果

    • 问:JDK现在最新版本?

    • 答:前不久发行了JDK17

    • 问:JDK17是LTS(Long Term Support)嘛?

    • 答:JDK8和11是LTS的,按照Oracle官方曾发布的新闻“从JDK11之后,每半年将会更新一个新版本,每三年才会发布一个长期支持版本”,因此推算得相差6个版本,半年一个版本的话正好是三年,因此JDK17是LTS的

    • 问:你自定义过注解嘛?如何实现的?

    • 答:自己手动写一个Annotation,然后绑定一个校验器类,校验器类实现指定的Validator接口;比如我在项目中定义了一个@LongNotNull,我也只是测试一下,其中校验方法中使用Objects.isNull(value)进行非空校验

    • 问:你项目中自己定义接口的作用?

    • 答:(懵)接口的作用不是用于扩展嘛

    • 问:你可能对我的问题有误解哈,没关系,我的意思是比如你自定义接口是为了实现什么样的功能?

    • 答:(超级加倍:懵 * double)项目中一般就Service定义为接口,然后Impl实现,,,呵呵,一般不就这样嘛。。。

    • 问:你可能还没理解我的意思哈,我举个例子,比如Serializable接口的作用?

    • 答:Serializable是一个标记接口,里面什么都没有,但是需要序列化的类必须实现它才能被Java从内存中进行序列化

    • 问:对,为什么需要序列化呢?

    • 答:一般就是为了返回给前端Json数据,然后的话还可以转换为流进行传输,或者保存到磁盘

    • 问:我的意思就是这样,Serializable接口的作用就是为了序列化

    • 答:好的,大概明白了。。。

  • 4、联系项目和SpringCloud

    • 问:看你项目中用到了SpringCloud是吧,你能介绍一下SpringCloud有哪些组件嘛?

    • 答:服务注册中心之前有Eureka、Zookeeper、Consul,现在国内用的比较多就是Nacos,Nacos还可以作为配置中心,只是我的项目中暂时还没有将它作为配置中心,后续将会引入;网关服务Gateway,远程调用OpenFeign;谈到Nacos,就想起SpringCloud Alibaba使用最多的三大组件:Nacos、Sentinel服务限流熔断、Seata分布式事务,大概就这样了

    • 问:哎,你的项目中为什么有Gateway,还引入了Nginx,两者的功能不是差不多嘛?为何多此一举?

    • 答:我曾经也思考过这个问题,单独使用Nginx或Gateway都能实现负载均衡效果,但是我后来曾经看到过,一般使用Nginx+Gateway才能实现高可用集群,我的理解是请求静态资源文件可以直接从Nginx中获取,因为Nginx特点之一就是动静分离,然后Gateway结合Sentinel可以实现服务限流

    • (自我感觉唯一不完美回答就是这里Gateway的相关作用)

    • 问:原来这样,那你的Gateway在里面实现什么效果呢?

    • 答:我目前使用它进行路径转发和路径重写

    • 问:路径重写?你如何做到的呢?

    • 答:我目前只是暂时在配置文件中进行编写,参考SpringCloud Gateway官方文档中提到的predicate、url、filter等

    • 问:只是在配置文件啊,为什么不写配置类呢?其中不是提供了很多现成的类和接口供使用嘛?

    • 答:因为初步使用,目前项目只是做到将框架搭起来,能够正常运行,后期将会进行一定的整合优化

    • 问:那你路径重写有什么作用呢?

    • 答:这样可以保证内部接口的安全,比如登录请求,外界只发送一个http://xxx.myapp.com/login,而我项目中实际接口为http://localhost:8080/backstage/user/login,我通过路径改写将外界请求进行路径重写再发送给项目中对应服务,外界将不会知道实际接口url,可以有效保证接口安全性。

    • 问:了解过Filter嘛?

    • 答:SpringSecurity是由一系列的Filter链组成的,项目中实现过认证过滤器、授权过滤器、无效访问过滤器、以及登录用户名和密码校验过滤器等

  • 5、我这边差不多,你还有什么要问我的?

    • 对我的表现或者评价——感觉掌握的挺到位的,但是加强学习还是必须要的。。

    • 后续流程——你可以去问问HR具体流程

  • 6、结束——面试官再见,好的再见!!!

#Java开发##面经#
全部评论

相关推荐

04-11 00:51
已编辑
门头沟学院 Java
先说一下楼主的情况:双非本大三,两段实习,javaer,想要找一个暑期大厂offer,努力了两个月,三月份每天的状态就是算法,八股,项目,四月份更是一个面试没有,最终还是没有结果,心碎了一地。期间面了一些中小厂,大厂只有腾讯约面,其他大厂都投了一遍,但是还是石沉大海。再看一下楼主的面试结果吧,就不说ttl了腾讯s3:三面挂csig:一面挂teg:三面挂wxg:一面挂没错,面了八次腾讯,两次三面挂,当时真的心都碎了。其他中小厂都有面,有的没过,有的oc,但是都没有去。其他大厂投了简历,但是不是简历挂,就是测评挂,都说今年行情好很多,各大厂都扩招,可是问题出在那里呢?学历背景吗?实习经历吗?还是简历不够好看?依稀记得,从年初七就离开了家里,回到学校,早早准备面试,当时自己认为凭借着自己的两段实习经历,以及大二就开始准备的八股算法,拿大厂offer不是问题,但是还是不敢放松,回校的状态每天就是算法,八股,还有查看各种招聘信息,想着尽早投机会多,但是事实证明,投的早,不如投的刚刚好。当时想着,先投一些中小厂开始面试,找找面试感觉,从2.10就开始有面试了,基本都是线下面试,面试的感觉都很不错,觉得自己的状态慢慢回来了,期间也有oc一些中小厂,但是自己的目标并不在此,只是想练一下手,遂拒。后面投了腾讯的暑期实习基地,不久就约面了,第一次面这么大的厂,多少有点紧张,好在运气还不错,遇到的面试官也比较好,一直干到了三面,期间看牛客有不少说一面就挂了的,感觉自己还是比较幸运的,但是没想到倒在了三面,一周后就挂了,伤心是有的,但是想到这才刚刚开始,还有很多机会,便继续准备下一次面试了,很快,被另外一个部门捞了,一进会议,面试官没开摄像头,看网上说没开摄像头很多都是kpi,但是自己给自己打气,认为面试官只是不方便开摄像头罢了,面完,感觉良好,没问什么很难得问题,基本都答出来了,算法两道也a了一道,感觉实习不会这么严格吧?还是过了一会挂了,因为这个?还是技术不太匹配?面试过程中说搞C++的,心想,搞c++的你面我干啥?唉,这时候有点气馁,然后就接下来半个月没有面试。这时已经是三月底了,看到牛客好多人都已经陆陆续续拿到了offer,看人家的面试准备也没那么早,有0实习的,有没刷算法的,有两个面的,,,唉,反正是一言难尽啊,感觉努力没有什么意义,面试多半是看面试官的感觉,主观性很大啊,只要你技术没有太大的问题。第三次面试腾讯,面试来的比较突然,期间已经有几天没看八股什么的了,临时看了一下之前自己做的面试笔记,但是面试却异常顺利,三天闯到了三面,自己也不敢相信,三面玩感觉也良好,脑子里不得不想着一些“offer结算画面”,但是过了一会查看流程显示“流程终止”,我?哎,当时真的有苦说不出啊,也是一晚没睡。后面就逐渐开始褪去大厂梦了,看着曾经跟自己交流的牛油,朋友,认识的人,觉得他们技术不太如你,算法刷的没你多,进了大厂,但是这又如何呢?能力强不强不是你了说了,面试官说了算。也逐渐知道,不是你能力好就可以了,还得有运气,运气,运气。这个过程太累了,和自己和解吧,不用非得大厂,找个合适一点的就好,放轻松一点。今天有点心事睡不着,闲着想写一些自己的面试过程,勿喷。附上一张面试的情况,公司就不方便透露了。
怒卷的斯科特:八分运气两分实力
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
3
16
分享

创作者周榜

更多
牛客网
牛客企业服务