阿里妈妈-广告部门-Java一二面面经
阿里杭州广告部门面经
一面:
1.项目
2.多台机器都可以操作一个事情,但这个事情只需要被执行一次,怎么办?可以用java的悲观锁(sync\reentrantlock)或在数据库里用一个version字段然后加乐观锁(只在version为期待值时才更新):
为数据库加一个version字段,当读取数据时把version字段也读出来,提交更新时,如果当前数据库中version 等于 之前读出来的version,就把数据写进去:
update task set value = newValue, version = versionValue + 1 where version = versionValue;
3.聊一聊我项目中vue和react的区别,react的virtual dom和vue的双向绑定、生命周期钩子方法
4. jvm中的堆知道什么(堆是高频考点),堆分为哪几块(新生代、永生代,然后各自介绍下),young gc和full gc是对哪一块,频繁full gc怎么办??
5. NIO(非阻塞型IO)
6. 在浏览器输入网址,会发生一系列什么?
7. cookie 和 session的区别:存放位置、什么时候过期,sessionId、哪个更安全
8. spring boot和spring有什么区别,我说上手更快,不用再写xml配置了,然后问我这些注解和xml配置是怎么起作用的,应该是在问控制反转和依赖注入这一套。
9. 用docker吗?我说我们不用。
10. 说10个linux命令
11. 写过shell脚本吗?我说写过groovy,然后随便讲了一些。
12 算法题:二叉树的镜像,我没想到递归的形式,用的队列。但继续往下深问就卡壳了:问如果一个节点里有一些数据结构,这些结构不是子节点,但也要把它们镜像反转该怎么办?应该用递归+广度遍历来做
13. mysql中的utf-8和mb4的区别:mb4:most bytes 4。mysql的utf8只能拿出3个字节来保存字符,因为要为char类型数据保留足够的长度,所以只能保存大多数字符,如少量汉字、emoji表情,而mb4就有4个字节可以用来保存汉字,能覆盖所有的字符。
14. mysql: 如何建索引(要考虑什么),如何提高mysql语句的效率,如何提高模糊匹配的效率,group by之后再对结果进行筛选怎么办(having) ,left join和join的区别
二面:
全问的项目,然后就挂了,尴尬。
#阿里巴巴##Java工程师##面经##校招#