面的是问财集群的。Java开发岗。了解到共三轮面试:两轮技术面和一轮hr面。我的一面时长大概在45分钟。
面试官十分专业,是个大佬!
流程:
- 自我介绍:姓名+学校+专业+研究方向+科研项目+竞赛+生活运动+学习成绩+同学邻里和睦相处哒。
- 谈及本科:
- 问:谈到成绩,看你本科是信息专业啥的?你是怎么考虑去学计算机的呢?
- 答:面试官你误会啦,我本科的学院是信息与电子工程学院,但是专业是软件工程。(自本科就学习计算机哒,是火热的计算机科班。)
- 问:那么在本科学习哪些课程呢?
- 答:一开始是学c语言入门,然后学习Java、数据结构、操作系统、计算机网络、计算机组成、数据库原理等专业知识。
- 问:那么c语言中有一个结构体的概念,其c中的结构体和c++中的类,你是怎么理解的呢?
- 答:(淦,我就粗粗了解c,写写算法,没然后了)我用c主要是用在算法上,对c++不太熟悉,但是我知道c++也是面向对象的语言,而Java也是,那我就将c的结构体和Java的类进行比较吧。我认为c的结构体和Java的类其实是比较类似的,都是将对象的属性封装起来使用。以一个对象的方式进行使用,配合逻辑,完成需求。(可恶,当时我没想到,结构体中只有属性,没有方法哒,而Java类中是可以有方法和属性的)。而且c是面向过程的语言,而Java是面向对象的语言,面向对象是通过对象之间的交互完成需求,以对象为中心,而面向过程是通过函数的方式,以事件为中心,配上逻辑,完成需求。
- 问:在c中,关键的是指针,你对指针有所了解吗?
- 答:(求求了,别问了c了,我真的就是用用呀,哭唧唧)我当初学习指针的时候还是比较困难的,主要是思维没有转换过来。我一般访问数组时是直接通过下标访问,而当初学习到指针时,需要用指针访问,我那时候没理解,后面进一步学习,我了解到,数组的访问通过指针也可访问比如*(p+i),访问的是第i个元素,且数组a其实就是数组的起始地址,此时*p就是数组的起始地址,访问*(p+i)就是访问第i个元素。以上是我对指针的理解。
3. 谈及项目
- 问:好,本科就先聊到这,来聊聊项目吧。简要介绍一下项目以及你做的内容吧。
- 答:(终于不聊c了,我人麻了)介绍科研项目背景、我做的内容(包括人工智能和云平台的部分内容)。
- 问:那么在你项目中,你有用到多线程吗?
- 答:(实话实说,多线程用到的地方确实少)其实项目中用到多线程的地方不多,主要是单线程。但是我在学习多线程时有进行demo测试。比如可通过继承thead类,实现runnable接口、callable接口,通过线程池等方式来创建线程。当然,若是以实现接口的形式来创建线程,还是要放入thread类进行start方法调用的。
- 问:那么,你认为在以上方法中,项目中会常用那种方法呢?
- 答:我认为一般使用线程池。其主要有几个核心参数如corePoolSize、maxinumPoolSize、keepAlive、队列大小以及拒绝策略。然后解释一下各个参数的含义。
- 问:那么,在多线程的使用过程中,会遇到什么问题吗?
- 答:遇到什么问题?会有什么问题?(干碎我自己,那时我没理解面试官要问的是线程并发的问题,笨蛋)
- 问:就是多线程一起使用的话,数据访问会出现什么问题?
- 答:哦!(笨死了)是指线程并发过程中会遇到的问题吧。多线程不可避免的带来并发问题,那么为了解决这个问题,可以采用锁机制、CAS等同步方式去维护线程同步。(兴高采烈等待面试官提问,你快问呀,你快问呀)。
- 问:好。那么你有了解过反射吗?有什么应用场景吗?
- 答:(可惜,咋不继续问呢)了解过。反射一般用在获取class类的属性和方法上,其突破了访问修饰符的权限限制,能够让我们获得本不能获得方法和属性。通过这种方法,能够加大程序的灵活性。比如在spring中,AOP以及注解就是通过反射进行增强的,但一个注解如@Autowired,就能够进行依赖注入,那么其底层实现还是通过反射实现的。
- 问:那么,反射会带来什么危害呢?我们要怎么防止这个危害呢?
- 答:我认为,技术就是拿来用的,反射技术的存在是为了提升程序的灵活性,突破了访问权限的限制,大大增加灵活性。防止的话,我认为其主要防君子不防小人的,你硬要破坏,进行危害,我也没办法。
4. 谈及人工智能
- 问:看你简历以及你的介绍,你在研究生阶段是研究人工智能的,那么为什么会转到开发上呢?
- 答:我本科是学习Java的,那么就在开发领域打下了基础。但是在我毕业时,我感觉我对计算机行业的理解还是比较模糊,因此我选择考研深造。那么在研究生阶段,我接触到了人工智能领域的内容,接触到了计算机行业的前沿知识,并且在我参加的众多宣讲会中,我认为,将人工智能落地,将会是以后的发展方向。比如人工智能和汽车相结合成无人驾驶等。因此,我认为我目前有人工智能领域的背景,且也有开发的经验,发展方向是人工智能落地,那么我觉得我在该行业是比较有优势的。我能接触到更广的业务,拓展视野,会有更好的发展空间和潜力。
5. 例行算法
- 问:来一到简单的算法吧,两个有序数组的合并
- 答:(我真想把我劈死,我这个笨蛋,如此简单的题,我还被稍微卡住)我写的时候,采用双指针的思路写,pA指向A数组,pB指向B数组,取小者作为结果。对应指针++。然后判断哪个指针没到头,将其拼接在结果数组上即可。可恶,在写循环时,不知道哪里写错了,陷入死循环,麻了。我直接删除代码重写,采用傻瓜式,直接将两个数组加入list,然后list.sort()。虽然留下了菜鸡印象,但总比完成不了好嘛(哭唧唧,面试完,我2分钟内写出,我吐了)。
6. 反问阶段
- 问:面试官你是那个部门的?
- 答:就是你报的部门,问财集群的。(我感觉面试官一脸惊讶,你这都不知道?)
- 问:原来是报名哪个部门,就由哪个部门来问,我以为会有其他部门来问的。好的,明白。(淦,及时圆回来)。那么面试官你在同花顺待了多久呢?
- 答:我觉得你问问工作内容比较好。(我去,我问的问题不对!看我及时挽救)
- 问:啊哈,我其实是想通过这个问题来进一步问面试官在同花顺的工作感受。(完美,真机智)
- 答:嗯,巴拉巴拉。概括一下就是体感不错。
- 问:那么,工作的内容有有哪些呢?
- 答:梗概:开发、业务等。
- 问:那么,如何晋升呢?
- 答:介绍一下,有这,有那。
- 问:那么,比较关心的加班情况怎么样呢?
- 答:互联网行业嘛,加班是常态。加班也看部门,也看项目紧急情况,十分紧急就需要加班。
总结本次面试:
- 在能进行知识迁移的内容,比如比较c和c++时,可以更换到c与Java的比较,因此c++和Java都是面向对象的语言,要灵活转变。能回答就回答,但是在不知道的领域,要告诉面试官你的知识边界在哪里,以免他问的深入,你又不会,直接gg。
- 目前的面试体验来看,一般不会问单纯的八股文,而是结合场景来问,结合你的使用场景问。需要将八股和项目结合,也就是落到实处。
- 算法。不说了,我要去刷剑指offer了。
最后,每次面试都是提升自己的机会,希望大家都有美好的未来。
#同花顺Java工程师面经##秋招##Java开发#