Skip to main content

面试总结

2024/02/11__北京畅哲-java开发 8k(2.14Offer)

base北京,Java开发,8k,试用期6个月,打八折,20%绩效,年终奖无,只有项目奖金(不知道能拿多少)这个面试非常小公司特点,主要考察你能不能干活,去了就让你尝试开发功能,写了几个小时,写完了才让我面试,面试也是只问你的项目经验和你的个人信息,技术方面的几乎都没有问,就一轮面试。但是对我来说起点有点低,双休,朝九晚七,午休一小时,非常多出差,和驻场(军工)开发。

2024/02/13__北京航天爱威-java 开发-12k 左右(无消息被拒)

一、项目

数据采集项目:

1.数据迁移,到底是迁移的什么数据?❌

2.数据看板,这个实时刷新,是怎做的,前端每隔5s去掉一次接口,时间长了,浏览器会因为缓存而崩溃的,这个有问题❌

仿b站项目:

1.登录的流程说的不是非常清楚,并且,这个非对称加密,这个公钥和私钥是每个用户都生成一个吗?❌不会

2.rocketMQ,重复消费,是什么概念,如何产生的?解决办法是什么,有点不熟悉

3.线程池优化,如何知道某一个线程已经执行结束了呢?

2024/02/19__江苏道达智能-java开发-(10-15k)(一面通过,二面未能够参加)

一面通过,但是二面需要去南京线下面试,人在北京,于是放弃。

一、八股

  • 你了解SpringCloud吗?这个露怯了,说的不会查。

  • 假如有10个线程正在并发执行,我想等待这10个线程执行结束之后再执行另一个线程的事情,你觉得如何等待?

    A:(1)join(),首先启动10个线程,之后每一个线程启动,启动之后遍历所有线程,全部执行join()方法(2)利用countDownLaunch,初始传入线程的数量,每次执行玩一个线程的最后finally中执行countDownLaunch--的操作,前面一个可以具体针对某一个线程进行操作,后面一个主要通过数量来进行限制

  • 分布式的服务你了解吗,我看你写了springcloud?❌

  • 你了解哪些分布式的框架?❌

  • 服务之间的通信你知道吗,都有哪些具体的?❌RPC,具体的有Thirft、Pegion、grpc、dubbo

  • 你了解Dubbo吗?❌

  • 你了解Netty吗?❌

  • 你了解socket协议中有一个粘包的问题吗

二、项目

数据采集及数字化处理系统

1.这么长的名字,为什么他只是做数字迁移的,名字是不是不太对得上?❌

2.数据采集和数据同步是不是两个东西?❌

3.采集的是什么数据?需要和什么去对接吗?❌

B站的项目

1.你是怎么去使用Redis的?❌

​ 这一块,假如没有redis可以吗,为什么要有redis?

2024/02/19__万兴科技-Android开发(一面挂,Boss15-25k)

一、项目

数据采集及数字化处理系统

  • 介绍一下这个项目大概是什么样的,业务逻辑是什么?流程是什么样?你在中间负责那一块

  • 数据看板,原来存在着什么问题,你才去用了定时任务和缓存?干了些什么,提高了哪些速度?

  • 数据看板,目前数据的刷新频率是多少?❌

二、八股

  • 线程池的参数有哪些,分别有什么作用?这里只说了6个,但是没有说作用(这个需要通过流程来去解释)

  • 多线程使用的时候,需要注意什么问题,结合你遇到的问题说一说介绍分布式锁的时候,没有结合美团的项目!线程池参数设置也没用多讲,比如核心参数的设置你是如何设置的呀?

  • 分布式锁是针对线程的操作吗?

  • synchronized,加在类上和加在关键字上有什么区别吗❌这个完全不知道去了解一下synchronized

  • 有一个轻量级的也是解决资源竞争的,叫做voliate,你知道这个关键字的作用吗?(其实是可见性问题

  • 说一下可见性问题

  • 你正常写代码,写一个变量,这个正常是存储在哪里的?

    面试官:理解不太对,比如一个对象,当然会实例化到堆中,但是对象的引用会存放在栈的引用里面的,初始化一个变量,会初始化到堆中,使用的时候,会短暂,从堆中去拿到这个堆中的变量的值,放到栈中,在栈中完成修改后,再去放回去堆中,其实那其实加了voliate这个关键字,他就不会每次从堆栈里面读取信息了,而是从堆内存中读取最新的信息,这种就是一个轻量级解决竞争的问题,特别适合只需要从堆中拿到最新信息的场景,但是涉及到更新,还是会有线程的问题

  • java中字符串的问题,string类型的变量一旦定义了,是无法改变的,下面第二行代码中,s + "b"产生了一个新的字符串"ab"重新赋值给了s,同理,s.concat("d"),也只是产生了一个新的"abd",但是没有赋值给原来的s

    注意:append这个方法是引用传递,不是值传递,java中的函数都是引用传递,之所有没有加上c,不是因为它是值传递(记住了,永远是引用传递),而是因为他是没有重新赋值,比如:s = s + “c”;

    String s = "a";
    s = s +" b";
    append(s);
    s.concat("d");
    public staic append(String s){
    s + "c";
    }