霍伟平

来自CGTWiki
跳转至:导航搜索

简介

光学工程 学硕 在实验室前期在做悬浮显示系统的web端以及后期安卓端的后台接口开发。

面经

如果是针对后台开发的,一般大厂不太会限制语言,更多注重基础知识,比如计算机网络,操作系统,算法这样的。把之前经历的面试问过的问题列举一下,大家作为参考吧


美团金融面试:

一面:

1.自我介绍

2.觉得自己在实习过程中学习到什么

3.觉得自己的优势是什么。

4.spring的ioc和aop,注解autowierd和resource的区别,分别用在什么场景。(这个网易面试的时候问到的dao层有两个,service要实现自动注入怎么实现:当时因为问的是@Autowired的注解,这个注解是默认按照type类型注入的,所以可以结合@qualifi啥的注解来指定name。如果是xml的话可以指定使用name来注入。另外就是@resouece是按照name来注入的。所以这里可以直接使用这个注解。)

5,数据库索引数据结构

6,算法:反转单向链表和数组里找出和为目标值的两个数

7.string s=new string("abc")创建了几个对象

8.final的作用,修饰基本类型和修饰引用类型有什么区别。(修饰基本类型就是不可变,修饰引用类型就是地址不可变)

9,线程池,任务来时的流程,以及阻塞队列如果是无限的,会出现什么问题(用户响应慢),线程池的参数。

10,抽象类和接口的区别,以及分别什么时候用。default关键字是接口中的,可以使得里面有非抽象方法。

11,乐观锁和悲观锁。乐观锁怎么实现?(cas)mvcc

二面:

1.自我介绍

2,项目学的东西(整体架构)

3,在实习时做过那些:并发优化(怎么完成的,线程),oakbay数据迁移

4.用到了rpc对rpc了解吗?注册中心(小米用了zk.如果挂了怎么办,全部挂掉)(本地记录一个ip地址,和要调用的服务的名称,注册中心挂掉的话直接通过ip地址去调用)

5,对controller的动态代理怎么实现的,那个白名单的拦截器继承了handlerinterceptor的什么方法? ans:@Aspect@Component两个注解,把该类交给容器管理,然后在类中的方法上加@Around注解(切入点用正则表达式匹配所有的controller,完成对controller方法调用的时间以及参数的处理等等。白名单实现了handlerInterceptor的接口,因为要在controller调用之前完成对白名单的校验,所以实现了preHandle方法,完成白名单的校验逻辑,后面还有postHandle,afterCompletion) preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理; postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会修改ModelAndView (这个博主就基本不怎么用了); afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);

6,发布一个http接口需要考虑哪些方面:协议(get post),安全(白名单,token,sql注入,xss攻击等),考虑前后端分离(所以用json格式当参数和返回值,另外可以传设备类型到后台,aop统计不同设备调用次数)

7,你觉得java技术栈你哪方面更熟悉,spring的ioc容器,生成bean以后怎么get(回答了通过name或者.class获取,或者反射都不对,反射一开始说是对的,后来又说不对,不知道面试官想要的答案是什么)

8,反问。

三面

Q:自我介绍

Q:实习的亮点

Q:简历说到对controller进行动态代理,实现参数的处理,怎么实现的?

Q:使用的是哪个具体的注解:after,before?

Q:我看还用到了拦截器,具体是什么操作?

Q:除了preHandle方法,还有什么方法?具体的作用是什么?调用顺序呢?

Q:filter和handlerInterceptor的区别?分别应用的场景?以及我定义了两个Interceptor,运行顺序是什么?

Q:我看实验室的项目用到了MVC,为什么会采用这种三层架构?

Q:实习的时候用到了redis,是用来做什么的?分布式锁了解吗?怎么实现?

Q:什么时候释放锁?

Q:如果操作死锁了呢,

Q:一到过期时间就会删除吗?(是吧)你确定?()搜了搜找到一个博客,感觉可以参考一下https://blog.csdn.net/qq_35981283/article/details/70156422)

Q:cookie和session了解吗?

Q:怎么实现session共享?

Q:怎么实现前端拿不到cookie?

面试官:你了解支付吗?涉及到高并发,你怎么理解高并发?达到多大量级是高并发?


阿里实习面试

首先聊项目

1,mysql事务,具体例子,,mysql索引,ab两列建立索引,a在前和b在前有什么区别吗?

联合索引的使用在写where条件的顺序无关,mysql查询分析会进行优化而使用索引,但是减轻查询分析的压力,最好和索引的从左到右的顺序一致

2,原生servlet和框架写文件上传有什么区别

3,springmvc的拦截器,怎么实现的,拦截的东西是什么,(.do请求?)springmvc的过程有了解过吗,怎么定位到具体的方法的,就是映射到某个controller,怎么去调用他的方法,(反射)

springmvc的拦截器,是在每个请求之前加的,可以在请求之前做一些处理,以及还可以写后置拦截器。在请求之后做处理

4,还有哪里用到了反射,反射机制是怎么实现的

5,maven怎么进行jar包管理的,依赖和重复,abc三个jar包依赖不同版本的同一个jar包怎么maven怎么解决

6,你了解计算机基础吗,用计算机基础做过什么,应用这些原理解决过自己的什么问题,有没有进行过tcp抓包,

7,ubuntu网络连接有问题,你怎么解决?比如你有没有查是网关问题呢还是什么原因。

8,操作系统

9,说一个具体的例子,你当初怎么解决那个问题的,他的底层实现是什么,为什么这样就可以呢,


字节面试:

字节面试因为语言不通,字节主要使用go语言,所以更多的侧重基础,一面涉及计算机网络和实习,二面场景设计题和基础,三面则更注重算法和实习经历。

三面的算法写在下面,大家作为一个参考:

1,介绍自己,

2,实验室相关的一些东西

3,算法

(1)输入两个整数,用String输出,对于循环小数的话,比如1/3,输出0.(3);

(2)输入中文大写字符串(”壹万一千“)这样的,转换为int

(3)一个数组中包含的出现次数最多的数字的个数称为这个数组的度,求一个最小的子数组,度和数组的度相同

4,在小米的项目;(存储,整体架构,单独的架构,自己做的东西,并发优化等等)

5,反问


其余还有一些面试,因为当时一时懒惰,并没有记录下来,如果是涉及java后台开发岗的话,有一些建议:

1.可以把Java基础过一遍,然后重点看J.U.C下面的源码(因为这里面包含了数组,链表,红黑树等数据结构)

2.Spring框架的源码可以看一些,里面涉及许多设计模式,可以结合《大话设计模式》《Spring技术内幕》一起看,如果能自己Debug一遍流程最好啦

3.Java并发编程,推荐《Java并发编程的艺术》,重点理解synchronized,volatile关键字,理解ConcurrentHashMap,ReentrantLock锁的底层原理

4.Java虚拟机部分,推荐周志明《深入理解Java虚拟机》

5.数据库部分,主要是Mysql数据库,要理解索引,隔离级别,读写锁等,要会写常见Sql语句。

6.计算机网络,TCP/IP系列,浏览器输入网址后的整个流程等



在面试过程中,如果有实习经历,面试官更多的会问你在实习过程中做过什么,并且会问你整体架构,所以如果有机会实习,在做完需求的时候,可以通过询问同事或者自己通过内网资源了解自己所做项目的整体架构,具体的实现不需要详细了解,但是一定要弄明白从前到后的流程和使用到的框架如何。检验自己的成果就是假设有新同事入职,leader让你帮忙介绍一下整个项目的流程和架构,你可以大概说清楚,这就可以。

毕业去向

互联网后台开发

毕业论文

当前状态

进入审阅模式

论文初稿

对实验室的贡献

  • 彭尉蔚走后,接手了华为悬浮项目web后台,并做了一段时间web json接口提供给Andriod系统的工作。