我的凉经
我的凉经(持续更新)
今天2022.11.9开始了第一次Java面试,记录一下。
字节后端实习一面(50min)
- 
自我介绍 
- 
Spring的理解 
 没准备 跳了
- 
讲一下tcp协议 
- 
tcp谁先建立连接可以是服务端先发吗? 有点懵 一般情况下都是客户端发起,服务端的TCP进程先创建传输控制块TCB(Transmission control module),准备接收客户端进程的连接请求,然后服务端进程处于LISTEN,等待客户端的连接请求,如有,则作出响应。 
- 
为什么是三次握手、四次挥手 
- 
UDP为什么不安全? 
 讲得不太好 没看这块儿的八股。UDP为什么不可靠
- 
Ajax是做什么的?全称是什么?是HTTP的吗?不理解 为啥 Ajax即Asynchronous Javascript And XML(异步JavaScript和XML) Ajax原理 这个链接讲得挺全的 
- 
使用过程中HTTP有哪些知识点知道吗? 这里感觉面试官不是很喜欢我刚才提到的八股 刻意的避开了。然鹅平时好像也没用到啥http相关,就无了。 
- 
什么是线程什么是进程 
 这里也没复习好,应该是经典问题了。
- 
CPU的时间进程和线程怎么分? 
正确答案:cpu调度的是进程中的线程!   线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
我还说了个线程对于操作系统是不透明的 对于进程是透明的  太蠢啦。。。
- 
快排算法讲一下 时间空间复杂度是多少 为什么? 空间复杂度 时间复杂度应该是最好和平均是O(NlogN) 最坏是O(N2) 
 空间复杂度递归算法的空间复杂度 = 每次递归的空间复杂度O(1) * 递归深度 所以是O(logN)
- 
题目:单链表倒数第K个节点的值 
 这里没有封装到函数里 被吐槽了一下,节点需要自己new。如果链表长度不足K如何处理。
- 
多线程 打印两个字符 写出来了,让写个线程不安全的案例: 这里遇到了个问题 就是主函数里的两个线程无法改变主函数里的变量 会报错,只能拿到类里面去才行。。。被逮到问这是为啥? public class test { public static void main(String[] args) { int num = 1; new Thread(() -> { for (int i = 0; i < 10; i++) num++; }, "A").start(); new Thread(() -> { for (int i = 0; i < 10; i++) num++; }, "B").start(); } }这里nums++位置会报错:Variable used in lambda expression should be final or effectively final。 意思是:在lambda表达式中,变量应当是final或 effectively final的。 
 原因:lambda 表达式是由匿名内部类演变过来的,它们的作用都是实现接口方法,于是类比匿名内部类,lambda 表达式中使用的变量也需要是 final 类型。
 匿名内部类为啥要final?被匿名内部类引用的变量会被拷贝一份到内部类的环境中但其后,在外部,该变量如果被修改,则内部外部不一致Java为了避免数据不同步的问题,做出了匿名内部类只可以访问final的局部变量的限制。 总结下来就是: - Java设计者想要匿名函数或者Lambda函数内部外部保持数据一致性(知道了目的才好理解)
- 然而Java只是实现了capture-by-value形式的闭包,也就是匿名函数内部会重新拷贝一份自由变量,然后函数外部和函数内部就有两份数据
- 那么要想实现1中的目的,只能要求两处变量不变。JDK8之前要求使用final修饰,JDK8聪明些了,可以使用effectively final(effective:有效的;既成事实上的final变量,lambda表达式中使用)的方式。java8里不用final修饰局部变量也可以编译通过。总之,两边不变就行了。
 Java 8 之后,在匿名类或 Lambda 表达式中访问的局部变量,如果不是 final 类型的话,编译器自动加上 final 修饰符,即 Java8 新特性:effectively final。 其实能感觉到面试官想引导我说出上面那些。。。故意问了我()->{}是什么,是怎么执行的?感觉就是想让我联想起匿名内部类中变量也是只能用final类型的吧,可惜并不知道。 
- 
lambda表达式是对象还是类? 
 回答错了。。。应当是对象的。
- 
sql题 
 设计表结构 记录学生成绩
 Student: id Name
 Class:id name
 Grade:id grade clid stuid- 
查一下每门课程的最高成绩 
 当时没写出来。。Mysql回来恶补select c.name,max(grade) from Grade as g,Class as c where g.clid=c.id GROUP By c.name;
- 
上一题没写出来,让查一下语文课的最高分数。。降级了一下 SELECT MAX(grade) from grade,class WHERE class.`name`="语文";
- 
第二个的逻辑用Join能写吗 SELECT MAX(grade) from grade INNER JOIN class WHERE class.`name`="语文";其实直接给逗号换成inner join就行了,问题是没复习完全没印象。。 
 
- 
- 
用Springboot需要写哪些东西? 
 自己说了个三层架构,然后又说不上太来那三层三层架构: 
 表现层:就是我们平常说的web层,它负责接收客户端的请求,并向客户端响应结果,通常是客户端使用http请求web层,web层需要接收http请求,并完成http请求。
 依赖于业务层,当表现层接收到客户的请求,会调用业务层进行业务管理,并将结果响应给客户端。
 业务层:就是我们平常说的service层,负责进行逻辑业务处理。
 注意:虽然说表现层依赖业务层,但是业务层并不依赖表现层,但是业务层在进行业务处理时会依赖持久层
 持久层:
 就是我们平常说的dao层,负责数据的持久化,与数据库交互,对数据库进行增删改查。
 https://baiyuliang.blog.csdn.net/article/details/109253654 多看看Spring和SpringBoot慢慢来吧 感觉还差好多。。。
聆心智能一面(20min)
- 介绍项目
- Mysql的索引介绍一下
- 项目中用户登录校验,应该是整个token之类的,不过我是直接放到浏览器里localStorage。
- Java基本数据类型
- Maven了解吗 用过一点
- git的简单命令  拉取文件
 git clone https://github.com/tianqixin/runoob-git-test another-runoob-name
- docker的后端代码更改怎么做的。。。我直接kill掉然后重启。面试官:哎呦我去
- ReetrantLock介绍下
- CAS举了个例子
- 算法:lc 283. 移动零
反问:项目做啥的。
聆心智能终面(22min)
- 自我介绍
- 问老师方向,为啥要整深度学习,为啥走开发不走算法岗
- Springboot的设计模式?bean都是单例吗?
- JVM调优咋监控 有个JProfiler 观察dump文件。有项目实际的使用吗?无
- 项目权限怎么做的?
- 项目难点是什么?
- 项目有没有并发?无
- 文件存储到和程序一个服务器?确实。。。一个寄了全寄了
- 到岗时间
反问:实习内容做什么

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号