Java基础
基础
1: 解释一下java的特性,封装继承多态
封装:可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口
继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性
多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分
为编译时的多态性和运行时的多态性
2:Java和C++的区别
指针,内存管理,编译过程(java会先生成字节码),单继承多继承,C++支持多继承而Java不支持多继承的原因
3:你对接口的理解
4:编译型语言,解释型语言和脚本语言的对比
编译型语言与解释型语言的真正区别
任何语言都必须翻译成机器语言,计算机才能运行高级语言编写的程序。 翻译的方式有两种:一个是编译,一个是解释。
编译型语言:C,C++。编译后成为机器语言,以后执行的时候就不需要编译了,
解释型语言:JAVA,C#。在运行的时候将程序翻译为机器语言,虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,由JVM将字节码再翻译成机器语言。
脚本语言:python,php,JavaScript,perl,asp。一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。脚本语言代码一般是文本格式
编译型语言 | C/C++ | 每次运行直接使用编译好的结果(exe文件)就好了 执行效率高 |
---|---|---|
解释型语言 | Java/Python/c#/basic | 解释型语言每执行一次就要翻译一次,效率比较低,但是跨 平台性好 |
脚本语言 | JavaScript/Php/VBscript/ASP | 脚本语言两大特性:一、解释执行 二、执行文件为文本 |
解释语言是说解释执行的语言,但执行的代码并不一定是文本格式的。脚本语言的程序是文本文件,并且是解释执行的
5:重写和重载的区别
6:构造器可以被重写吗
不能,子类和父类类名字都不一样,而构造函数的名字与类名相同
7:final关键字的作用
8:静态变量与实例变量的区别(实例变量与成员变量的区别:类创建了实例,成员变量就是实例变量)
9:Java序列化 Seriable,什么变量不能被序列化
transient修饰的变量为什么不能被序列化
面试官:transient修饰的变量或被默认设置为初始值
10 :new和python里面Init方法的区别
11:Error和Exception的区别
12:哪些Exception需要try catch
13:java的特性,什么情况下会转化为多态
14:讲一下多态
15:java会有内存泄漏吗,C++呢,怎么产生的 Java 中 7 个潜在的内存泄露风险
16:局部变量存放在堆区还是栈区,堆和栈的区别
17:如果在函数里面定义了一个数组,可以返回这个数组吗
18:对 java的新的技术,比如java8的lambda表达式有了解吗
19:java8相比之前的版本有什么区别或者优点
20:接口和抽象类的区别和使用场景,抽象类用什么修饰,抽象类能直接创建抽象对象吗
面试官答:抽象类必须有自己特定的实现类去创建对象
21:后端开发的动态分派和静态分派有听说过吗
面试官答:动态分派和静态分派实际上是指重载和重写,就根据方法名和入参来定位方法(我估计面试官是想考怎么区分重载函数)
22:final,finally,finalize的区别和用法,final修饰的类、变量、方法有什么特性,什么时候用finally(面试官:try,catch捕获异常时的一种执行策略),什么时候用finalize
23:什么场景会用到序列化(java对象转化成字节的时候)
24:怎么表示一个类需要序列化(serilable)
25:如果类中某个属性不需要序列化,用什么关键字修饰(transient)
26:equals方法了解吗
27:类跟对象
28:对象跟引用的关系 引用和对象的关系
我答:引用保存的是对象的地址,面试官说JAVA里面是这样的,然后问我C++里面是不是这样
29:int的范围(因为数据库需要判断自增主键)
30:Object的方法
31:8种基本数据类型
32:自动装箱和自动拆箱的概念,容易造成什么问题?
拆箱的时候Integer可能是null,但是int没有null
JVM
1:JVM的类加载过程
2:垃圾回收算法有了解过吗
3:JVM的内存区域划分,堆,栈,都放什么
4:程序计数器
5:如何判断一个对象是垃圾
6:jstat的作用(JVM)
集合
1:ConcurrentHashMap是如何实现线程安全的
2:常用的集合
3:Map常用的实现类
4:HashMap的底层数据结构,为什么要加红黑树这种结构,链表到红黑树的转换条件,为什么是链表大于8转换成红黑树,HashMap的扩容,解决Hash冲突的方法,hash值相同,HashMap会怎么处理
Hash算法解决冲突的四种方法
5:ConcurrentHashMap和HashTab的区别
6:HashMap和ConcurrentHashMap的区别
7:ConcurrentHashMap如何保证线程安全,为什么比HashMap高效
8:HashMap和HashTable的区别
9:HashTable怎么实现线程安全(Synchronized修饰)
10:线程安全和非线程安全的哪一个性能好
11:JUC包提供了哪些常用类
12:HashMap的put操作时线程为什么不安全
13:HashMap的key用什么类型好一些(包装类)
14:解决hash冲突的方式
15:HashMap的底层原理,什么时候转化成红黑树
16:jdk,1.7和1.8 ConcurrentHashMap的区别
17:JAVA是自学是吧,讲一下Map这个数据结构
18:如果让你做键值对的查询,你会用什么数据结构
19:HashMap了解吗,可以说一下底层原理吗
20:Hashmap,TreeMap,HsahTable的对比
21:ConcurrentHashMap和HashMap的区别,性能上面的区别
22:集合方面了解那些集合.
答:扯了一些set,list
23:ArrayList和LinkedList的区别
24:set这块了解哪些
25:set跟List在性能上面有什么区别没有
26:平常怎么选择list跟set集合
27:我们知道list和set全部继承Collection接口,java中还有Collections类,Collection接口和Collections类的区别(面试官答:Collections是指常用的工具类,操作一些集合,操作实现Collection的一些类的时候我们可以用Collections里面的方法,比如排序,或者其他一些线程安全的实现,会用到Cllections。)
28:Collections里面的sort方法是用什么方法实现的
面试官:归并排序
29:多线程同时操作一个HashMap对象的话会有什么线程安全问题
面试官答:就是在1.7之前是线程不安全的,如果我们对它操作可能会产生一个现象就是,如果HashMap在执行Hash方法的时候,就可能导致循环链表的产生,查找会出问题
30:Hash到的查找原理你了解过吗.,(get方法),比如我有个HashMap里面有一系列的Key-vlue值,我们知道可以通过get把某个对应的value取出来,这个大概流程你知道吗,就怎么找到key对应的value值
面试官引导:HashMap拿到key之后第一步操作是什么
面试官引导:是要对key进行hash操作,取模确定在数组中的哪一个位置,取模之后我们会得到对应的链表
面试官:Hash是无序的,长度不可知的
回到上一个问题:就是Hash之后取值我们发现是一个循环链表的话,会发生CPU持续运转拿不到值的这么一个情况,这是HashMap在1.7之前产生的线程安全问题
31:JAVA有哪些数据集合
32:List下面有哪些实现类
33:ArrayList和LinkedList的区别
34:map下面有哪些常用的实现类
35:HashMap的底层原理了解过吗
36:HashMap的put方法的大概过程
37:ConcurrentHashMap和HashMap能保证key的顺序吗,想要保证1,2,3,4,5这样排用什么Map
多线程
1:进程和线程的区别,多线程与多进程的区别,为什么要有线程这种概念
java多线程专项(进程和线程的区别)
2:怎么控制线程数把性能发挥到最好
5:Synchronized锁的升级过程(敖丙的文章写过)
7:三个线程交替打印123程序设计
8:Synchronized和Lock的区别 synchronized和lock的实现方法的不同
9:什么场景用到重入锁
10:多线程的创建方式
11:死锁是怎么产生的
12:怎么防止死锁
①:设置优先级,用优先级顺序保证,哪一个线程来了之后,比如让奇数线程先访问,偶数线程后访问
②:给线程设置时间,时间到了就主动释放锁
13:了解过线程池吗
14:volatile实现可见性和指令重排
15:lock/RentrenLock的实现原理
16:cas
17:线程的生命周期,如何切换
18:synchronized和volatile的区别
19:锁:包括数据库的锁,操作系统的锁,线程的锁
20:线程的优先级(面试官:实际能不能优先执行还是要看Cpu的资源)
21:线程安全在java中有几种方式,怎么保证资源安全
22: Synchronized放在类上和放在对象上他们锁的范围有区别吗
23:Lock和Synchronized的区别
面试官:用lock锁必须要释放锁,synchronized只需要包裹在代码块里,lock锁有一个公平锁的特性,可以设定等待时间,比如设定5s,5s之后就自动把锁释放掉
24:有了解lOCK的实现基理吗,就是底层是怎么实现的
25:听说过CAS的概念吗
26:notify和wait的作用,经常和那个关键字结合使用(Synchronized),可以不和Synchronized一起用吗?
27:Synchronized怎么用,除了修饰方法还能修饰什么
28:Synchronized可以修饰静态方法吗?(可以的)
29:JDK1.5提供了JUC,明明有Synchronized就可以完成线程安全,为什么还要提供JUC呢?
JUC更灵活,Synchronized不能自主加锁,解锁,比如JUC有lock
30:ThreadPoolExtruator,线程池
IO流
1:IO流有哪几种类型,或者常用的IO流类
2:InputStream OutPutStream是最顶级的接口,它的实现有印象吗
异常
1:JAVA的异常体系了解吗
2:JAVA的try Catch用法
3:JAVA里面都有哪些异常
4:Exception这个异常知道吗
面试官:最顶层的异常在JAVA里面是Throwable
注解与反射
1:了解过java的反射机制吗
泛型
泛型解决什么问题
数据结构与算法
1:两个队列实现一个栈,用两个栈实现队列
大概思路是先把n个数据压入A队列,然后从队列中取出n-1个数据放入B队列,弹出A中剩余的一个元素,然后从B中取出n-2个数据压入A中,弹出B中剩余的一个元素,如此循环,就是出队序列类似一个栈,后进先出
https://www.jianshu.com/p/285419bfa880
2:二分查找的原理,时间复杂度(log(N))
3:hash表是什么,哈希值怎么算的 数据结构之哈希(hash)表
Java数据结构和算法(十三)——哈希表
简单来说,hash就是找到一种数据内容和数据存放地址之间的映射关系
哈希表百度百科
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位
哈希值的计算取决于散列函数
Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。
4:LRU算法
5:快速排序和堆排序的原理及应用场景,快排为什么不稳定,堆排序和快速排序的应用场景,你如何选择
快速排序原理及Java实现
堆排序原理及Java实现
所谓排序的稳定性,就是指在排序过程中,在对a关键字排序后会不会改变其他关键字的顺序。
有两个相同的数A和B,在排序之前A在B的前面,而经过排序之后,B跑到了A的前面,对于这种情况的发生,我们管他叫做排序的不稳定性
三 时间复杂度
简单的总结一下快速排序的时间复杂度问题
最优情况:每一次的flag刚好都可以平分整个数组,此时的时间复杂度为O(nlogn)
最坏情况:每一次的flag刚好都是最大或者最小的数,此时的时间复杂度为O(n2)
平均情况:经过推到平均情况为O(nlogn)
堆排序方法对记录数较少的文件并不值得提倡,但对n较大的文件还是很有效的。因为其运行时间主要耗费在建初始堆和调整建新堆时进行的反复“筛选”上。
6:几种常见的排序算法的对比,时间复杂度的对比,以及你在用的时候,你的选择排序算法的逻辑是什么
7 :怎么判断单链表是否有环
8:提几个自己比较熟悉的算法
9:对算法的时间复杂度了解吗
11:快速排序的实现思路
12:归并排序的原理,用什么实现,时间复杂度,怎么算的时间复杂度
13:java有哪些数据结构
14:二叉树广度优先遍历怎么实现
15:链表查询的时间复杂度
16:简单讲一下hash表主要用来解决什么问题
17:hash表的底层实现,如何判断两个key是否相同
18:对树的了解,有时候为什么要使用平衡二叉树
19:简单介绍一下图和树的区别
20:图的深度优先和广度优先的区别
21:数组和链表的区别
22:数组插入删除为什么比链表慢
23:二分查找的优势,二分查找的时间复杂度,基于比较的排序的时间复杂度
24:常用的排序算法了解过哪些,讲一下冒泡排序
25:队列和栈的区别是什么
26:树有哪些遍历算法,后序是怎么遍历,红黑树了解一下
27:归并排序的时间复杂度怎么算的
28: 图的遍历算法啊有哪些,有什么区别,应用场景是什么
29:问一下基础的吧,二叉树算法描述一下,解释一下原理
30:为什么要有二叉树这种结构,直接用其他数据结构不行吗
31:二叉树的效率
32:堆是一种什么数据结构,他做哪些排序或者算法的时候性能会更高一点啊
33:快排,和堆排分别适用什么样的场景,什么时候快排快一点,什么时候堆排序快一点,什么样的数据用快排比较快,什么样的数据用堆排序比较快
34:数组,链表在使用上有什么区别,或者说内存存储上面有什么区别
35:读数据的时候使用堆的方式快还是链表的方式快
36:随机访问或者给定下标访问那个比较快,为什么
37:如果让你写一个栈溢出方法你会怎么写,或者你遇到过吗
(当时懵逼了,可能是递归没有结束条件就会栈溢出吧)
38:深度优先是怎么实现的,做深度优先会遇到哪些数据结构
39:做广度优先会遇到哪些数据结构或者集合类
40:二分查找的大概过程
41:写一个前序二叉树遍历的程序的思路
数据库
1:Mysql常用的存储引擎,以及它们的区别
2:Mysql索引,数据结构,索引的优化
3:怎么理解mysql的左连接和右连接
4:mysql原理
5:MyIasm和InnoDB的区别,生成的文件都有哪些
6:mysql索引的种类
7:索引是怎么实现的
8:索引是数字越多越好吗
9:数据库的范式,第一第二第三范式之间的区别
10:知道建表语句有哪些命令
11:你了解的Mysql,常见的事务隔离级别
12:索引的好处是加速,索引失效的场景说几个
计算机网络
1:三次握手
2:TCP怎么保证可靠传输,三次握手的过程
3:TCP与UDP的区别
4:Https如何保证安全
5:输入网址到展现网页的过程
6:对TCP/IP协议了解吗
7:HTTP/HTTPS的区别
8:网络协议,Http和Tcp有什么关系吗
9:系统之间的请求用那种协议
10:404,500了解吗
设计模式
Java设计模式:23种设计模式全面解析(超级详细)
1:实现单例模式的方式
2:DoubleCheck模式为什么要加Volatile关键字
3:Java系统框架,设计,MVC的好处是什么
4:设计模式,单例模式的作用,适配器模式
5:单例模式,手撕, 线程安全问题怎么解决
6:听说过**模式吗(没听懂),设计模式的一种
操作系统
1:怎么创建进程
2:进程间的通信方式.进程和线程之间的区别
3:进程的内存分区(处理堆栈还有什么)
4:I/O多路复用 听说过IO多路复用模型吗
你管这破玩意叫 IO 多路复用?
5:进程间的通信方式,线程间的通信方式
6:堆和栈有大小限制吗,分别是多少
7:堆和栈的区别
8:为什么线程间切换开销小一些
9:用过LINUX吗
10:操作系统死锁的几个条件
中间件
redis,MQ用过吗
分布式接触过吗,多个节点之间数据同步
Redis有了解吗
框架
1:Spring用过吗,redis,MQ用过吗
2:SpringMVC的调用链路,点击到返回
3:AOP
4:Springmvc最重要的servlet(dispatchServlet)
5:注解Autowired
6:用Spring一般是解决什么问题
7:Spring了解过吗
8:Spring的IOC和AOP,IOC是指什么样的操作
面试官:IOC是注入,比如我们可以设置一系列的关系,通过xml文件或者是注解就可以把不同的对象注射到…
9:用SpringMVC项目吗
10:说一下在项目中常用的注解
11:Autowired你一般怎么用的
面试官:Autowired实际上是修饰类中的一个变量的,比如controllel或者…中要引入其他Bean的话,可以用Autowired方式把服务类中的某一个变量,这个变量被Autowired修饰之后,Spring会自动把它对一个的Bean实现,我们可以直接使用
12:基础的增删改查一般都有maper文件,里面就有一些节点,说出其中几个常用的节点
insert,delete,find
13:换种方式:假如让你用MyBatis去实现一个东西的话,你一般在xml文件里面会写一些什么内容
14:Spring的AutoWired注解见过吗,什么时候会用AutoWired注解
学习情况及发展规划
1:学习途径有哪些,有没有看过新的技术和开源项目
2:JAVA掌握的情况
3:你在学习一门技术的学习思路
4:C++转JAVA是出于什么样的考虑
5:了解哪些数据结构
6:学习成绩排名
7:JAVA有没有做过小应用
8:有没有参加过编程相关的:竞赛
9:平时怎么学JAVA,看了哪些书
10:学过哪些计算机方面的课程
11:有没有估计自己写过多少行代码(我答得5000)
12:主修课程都是模式识别人工神经网络,为什么想走java?
13:学java是自学还是有这方面的课程
14:平常用java做过哪些东西
15:为什么不去找C++的岗
16:你的课程是深度学习方面比较多,为什么你是业务这块做的比较多,是导师分配还是自己选择的呀
17:我看你的博客比较多啊,你有课程,有导师的项目,还要自己下来学习写csdn,日常的时间够用吗
18:我看你的博客有很多刷题的,算法的学习知识刷题还是有看过相关的书籍啊(可以回复算法导论,看过的视频)
19:算法主要刷的哪些题
20:写的研究生课程你对哪一门课熟悉一点
21:讲一个机器学习或者图像学习的算法
22:为什么找工作往工程这方面,算法应该是你的主修课程啊
23:写C++的时候是用的面向对象的方式还是面向过程的方式
24:对服务端的开发有没有涉及过
25:在实际的项目中,让你写一个简单的服务,觉得有没有问题
26:云计算这个方向,向docker,k8s这些了解过吗
27:你的个人博客主要写什么东西
28:用JAVA写过增删改查的东西吗
29:了解一些深度学习的知识是吗
30:写过web页面吗,web用过的技术栈都有哪些
做过的项目
1:讲一个比较熟悉的深度学习的算法
2:JAVA未来的职业规划
3:做项目过程中遇到的问题以及是怎么解决的
4:用C++做过的比较好的项目
5:技术选型 ,MFC已经很老了,为什么要选MFC
6:项目开发的过程中,遇到的技术难点
7:MFC的设计理念,原理,哪些对你未来的工作比较有借鉴性
8:web网页一般有那几块组成,或者一个电商网站哪几个模块
9:软件模块 怎么做的 有没有设计 功能点,有没有其他项目 想看软件设计能力
10:有了解微表情识别模型里面的思路吗,系统的实际应用
11:风险评估系统主要的功能
12:介绍一下项目,项目的实施流程,架构设计,处理流程,前期处理,担任角色
我说图片经过了灰度化处理:问为什么要回灰度化
13:项目中对你的挑战是什么
14:JAVA掌握得怎么样,有没有做过小项目
15:有没有参加过编程相关的额竞赛,平时怎么学JAVA,看了哪些书
16:项目经历挑一个介绍一下,平时编程的时候用到的数据结构
17:微表情识别系统技术难点,微表情识别系统的多线程是怎么实现的
18:MFC是什么,给我介绍一下
19:微表情识别系统由几个人完成,有没有涉及多线程,进程和线程的区别是什么
20:在这三个系统中,我的收获是什么,或者说挑战是什么,如果没有挑战,说一下做的比较好的地方也行
21:微表情系统你做的哪一块,业务模块还是深度学习这个模块
22:微表情识别算法是怎么做的
23:对深度学习的了解,人脸识别算法的了解
24:训练人脸识别模型从训练之前的准备阶段到发布上线的过程中有哪些工作要做
25:数据集这块,训练集合测试集是怎么准备的
26:要对AI系统的流程比较清楚,不用懂算法,手推公式之类的
27:模型部署这块,是部署到服务端还是在本地调用,模型有多大(18.7M)
28:如果开发一个服务都有哪些点是需要关注的
就这个服务:拿人脸识别系统来说,你是放在本地调API,但是更多的方式是把模型部署成一个服务,然后对外提供一个比如HTTP,或者RPC这样一个接口,让外面其他的应用能够来调用
29:挑一个项目说一下怎么做的
反问面试官环节
阿里:一共四次面试,第二面会涉及到项目,你的业务的思考之类的
测试也会熟悉业务流程,写一些代码,脚本去测试功能,也会有工具类的开发,自动化测试
不同的部门需求不一样,侧重点不一样
客户端:安卓,ios,网站,pc端
后台:数据显示,交互,用户体验过,所有的数据都是后台提供的
后端开发:去后台或数据库或其他地方把数据找出来,返回给前端,做一些展示
主要看能力,没涉及过的框架都没关系,需要候选人,皮实,能力,潜力大一点
校招以JAVA基础为主,框架先不管
主要看JAVA基础,MySql基础(要深入学习),SSM不影响
重点:自己做过的项目的了解程度+JAVA基础,项目专研能力
平时用到什么技术?
数据结构,数据库,算法,计算机网络
会用到框架吗?
会用到,对于实习生暂时不要求这些
最看重什么?
面试题目的考察主要就是JAVA基础和一些数据结构包括数据库,在自己做的项目中对项目的思考以及对项目中用到的东西的原理是否有研究过
招聘实习生最看重的是什么:候选人的技术热情,相关基础,学习能力,潜力
框架不了解有影响吗:这些没关系的,很多同学在学校里面不会学
必须会的是那些呢:刚刚提发到的JAVA基础知识
面试官的建议
1:建议:对自己用过的东西了解得不够深入,要么你知识面非常广,当你的知识面受限于你的学习或者导师的项目,希望你对你用的东西学习比较深入,让我们看到你深入学习的能力(那么你学其他东西依然有这个能力)
:2:对自己的项目要深入了解,自己没有负责的模块也了解一下
3:基础加强 数据库 消息队列 计算机网络的协议:http/https/tcp/udp/ip
操作系统主要了解Linux系统的指令
只刷算法题是不行的,还得会至少Spring,面试官说实习生过来也得干活的,不然那代码都看不懂
4:计算机网络,操作系统,数据库,消息队列
5:主要看能力,没涉及过的框架都没关系,需要候选人,皮实,能力,潜力大一点
校招以JAVA基础为主,框架先不管
6:我觉得很多方面你还得去细化一下,要么网上去看网页,文档,做一下实践,网上的教程,源码解读,最关键搞清楚自己想从事什么方向,现在门槛会高一些,毕竟你是研究生,也不是说进入公司才开始学习,这样的话成本很高的,然后我觉得你还是应该再准备准备,我们这边需要的东西,你现在是一张白纸的话,跟我们也不太匹配,因为这也不是正式的面试,我看你简历上面其实也写得比较简单,有些东西不是说进了公司才去实践,通过官网,知名的项目多去了解一下,跟着视频做项目也是可以的
7:面试官:按照你现在的知识水平,我觉得你还需要再努力,JAVA这块基础性的东西了解的相对少一些
8:面试官:工作之前也是需要打好基础的,做JAVA的话,JAVA语言的特性还是要补一下,工作中确实是学得快一点,但是要找个好工作还是要学得扎实一点,阿里这边对语言的要求不高,学的课程掌握得比较好是加分比较大的,项目有深度了解也是比较赞的,还有就是博客加分很多的,语言的比重比较小,比较大的是数据结构,算法,还有相关课程,课程不需要都特别深,有1到2门比较了解得深入就可以了,或者项目有没有比较突出的,有没有发过权威的paper
我觉得你对数据结构这块还不是很扎实,课程有1-2门比较深入还是可以的
9:面试官:java语言常用的特性需要去了解一下,开发过程中用的的设计模式需要去了解一下,后端开发常用的框架需要去了解一下 像Redis Ngnix都还没问
SSM有什么好的学习方法吗?
可以去做一些小项目,做一些基本功能的实现,最主要一点要了解一下为什么要这样做
总结:这个面试官的路线感觉是:关键字–集合–数据结构-多线程–JVM–spring–springmvc-mybatis–算法,他的提问多是引导式的
10:这边对框架要求不高,开发语言涉及到GO/C++/Python/Java,针对实习生,校招,这些东西我们并不怎么看中,更看重的是基础,像计算机基础和学习能力这块,框架太多了,到时候用到那个就直接学就行来了
11:面试官建议:极客时间的Mysql45讲
后端也不光问JAVA,还要问Spring MyBatis 算法,建议找一些突破点 ,我问你问题的时候是希望你能主动的说,这样的话我就能根据你的回答,你擅长的继续聊,你给我的回答就是两句话就结束了,那我只能想下一个问题了,就会问到你不擅长的东西,当问到你不擅长的东西,你可以说这方面我不太了解,我在哪方面有经历,这样面试的过程就不会是面试官做主要的询问工作,
①JVM的命令,GC算法,对校招生也不要求JVM调优,你用过或者学过就OK了
②多线程:串行代码大家都有问题,怕并行的代码实习生写不好,推荐极客时间的《JAVA并发编程实战》,基本都会问多线程,并发里面就有很多跟集合相关的,可以了解一下
③MySQL:在阿里,不会有专门的数据库团队给你支持,sql得自己写
④算法
抓住突破点 JVM 并发编程 MySQL,如果那么多知识点都浅尝辄止
校招生没经历没问题的,想听到你思考能力比较好,发散能力比较好,如果浅尝辄止,会觉得你是一个不喜欢研究的人
做当前需要做的,做找工作需要的,比如Linux这些去公司了再学也来得及
你可以给面试官说你对多线程,数据库比较了解,建议多问问这些
一个合格的面试官是问同学擅长的东西
公司希望你能专研,能很快上手,
项目:需要准备一个java相关的,直接用SpringBoot就好了,SpringMVC就不用了,校招生不用去看源码,上手其实很简单
其他
1:你要怎样对登录功能进行验证
2:你最熟悉的数据结构是什么,,觉得最难的是什么,你做过最有满足感的事情是什么,项目中的技术难点
3:10000万个数怎么快速找最大值
4:有很多数据,都有重复,但只有一个数据没有重复,怎么快速找出这个没有重复的数(我会提出方法之后,面试官会问你时间复杂度,然后我问面试官的解法,面试官说可以考虑位运算,我接着问,面试官说他也不能说太多了这个意思,也对,毕竟他们的笔试卷就有这个题)
5:讲一个比较熟悉的深度学习的算法
6:测试也会熟悉业务流程,写一些代码,脚本去测试功能,也会有工具类的开发,自动化测试
不同的部门需求不一样,侧重点不一样
客户端:安卓,ios,网站,pc端
后台:数据显示,交互,用户体验过,所有的数据都是后台提供的
后端开发:去后台或数据库或其他地方把数据找出来,返回给前端,做一些展示
7:从事后台开发的话,你的优势,你比较擅长的
8:一个逻辑题:有8个球,有一个比较轻,通过什么方法最快找出来这个球
9:方法调用次数太多会导致什么问题
答:栈溢出
zhiding