挑灯夜读——实习生面试:蚂蚁金服
面试总结
- 自我介绍
- 项目开发
- 岗位熟悉
- Java知识点
- 笔试题目
自我介绍
- 面试官好!我是一名CSU,智能科学与技术专业的大三学生,我长得很帅(只有我自己这么觉得)…
项目开发
- 主要就是介绍时间跨度最长的智能车图像处理的方面,考虑到车辆识别,车道线识别,讲讲它们的原理和相关步骤,巴拉巴拉,大概十五分钟,然后比较熟悉的 “遗传算法优化的BP神经网络对交通流的预测” 没有讲。估摸着又要将很久,最后就是和小伙伴一起的APP项目,也是提了一口,面试官没有问我。
岗位熟悉(面试官人很好)
- 面试官:我看到你的简历是投我们的算法岗位吧,还是说,想看看其它岗位。
- 我:算法我就懂个皮毛,你让我来,我不是不行,但是你要是笑话我,我就对公司不负责了,所以我选后端。
- 面试官:那你用的最多的算法是什么算法呢?
- 我:python和java用的多
- 面试官:C++呢,我看到你这边也写到接触过C
- 我:第一门编程课就是它,是它带我入的门,但是后面没怎么复习过。
Java知识点
- 面试官:说说你对指针和引用的认识
- 我:指针指向对象地址,,,,,我在Java的世界里搜寻答案
- 面试官:(心理活动)让我来搜搜Java面试题,请你讲讲你理解的全局锁
- 我:这个时候,我就有点开心了,毕竟是java的内容,比较好记。为了便于拓展到我熟悉的知识点,我就想到了多线程。然后就从锁存在的意义,为了防止死锁等情况而产生的一种对共享资源的安全保护机制。它分为哪些死锁情况,锁有哪些,都是放在哪些地方,就形成了全局锁和局部锁的情况。而它们使用时主要还是因为你加锁的对象是谁?你要保证性能较优,就最好从对象,代码块和方法中选择最小的,当然必须起到效果。
- 面试官:既然你提到了多线程,那你讲讲线程和进程的含义
- 我:那当然就是一顿线程理解吧啦吧啦 (当然我觉得不要按照面试的知识点去背,显得很刻意,倒不如,把知识点自我化。然后捎带一些面经中的专有名称,不仅你理解起来较为容易,面试官要是听到你把这么难理解的知识点都实例化或者简单化,那还是印象会很好)
- 面试官:那你讲讲hashmap。
- 我:HashMap当然就是一顿举例数组+链表+红黑树,然后JDK1.8之前都是数组+链表,红黑树作用就是(我自己当时说的啥都忘了),估计就是我能记住的面经内容了,只记得给他将红黑树的自旋和平衡等,然后明说自己现在理解都很打脑壳。
- 面试官:刚刚听你提到了负载因子,讲讲它起什么作用
- 我:避免节点上的数组因为长度过长,反而失去其查询等操作的优势,而设立的一个负载量的定义,我记得负载因子多为8。
- 面试官:说说hashmap和hashtable的区别
- 我:一个线程不安全,一个线程安全,然后既然提到了线程,那必定就是一个适用于多线程,一个适用于单线程,且提到了效率问题等等。然后它们hashmap、arraylist和linklist等等又加了介绍(为了填补上面的知识点过少的问题)
- 面试官:可以,那我们来做题吧。
笔试题目
- 输入一串字符,将其转换为数字,可能存在符号,不能使用字符串转换数字的内置函数。
- 例如
input: “234” output:234
input: “+234” output:234
input: “-234” output:-234
思路:
- 1、输入字符串,首先判断字符串第一个是否为符号,有从第二位开始转换,无则从第一位转换
- 2、将字符串分别转成数字
- 3、将数字通过length作为10的次数来乘于改数字
- 4、length–,直到所有的字符转换完毕。