- 公司名称:链家上海研发中心
- 岗位:Java工程师
- 时间:2018年5月29日
因为是有人内推的,所以HR当时通知我的时候,我是抱着试试看的态度去的面试。由于链家的技术栈主要还是Java,而我本身的技术栈在Go和Python这块,所以这一次面试主要还是一次经历,找一找复习和准备的方向吧。
1.分别说出List、Set、Map的存取区别
2.不同的HashCode对应的对象值是否有可能一样?同一个对象是否会有不同两个HashCode?
3.写一段代码,判断字符串s是否能被抵消?其中s只能包含‘(’,‘)’,‘[’,‘]’,‘{’,‘}’这些字符,一对字符可以相消。
可以用栈解决
4.写一段代码,按照大小顺序将两个已经排序过的数组合并
可以构建一个新的数组
5.写一个SQL查询不同班级的前三名信息
6.Java对应的内存块都包括哪些?是否在实际使用中遇到过内存问题?用过哪些内存工具?
Java内存块包括栈内存块(存放变量)、堆内存块(存放对象)、常量内存块(存放常量)和代码内存块(存放静态代码资源)构成。前两者存放数据,后两者存放代码(进程=代码+数据)
7.Java中动态代理的实现方法?
这个是真不会……查了一下应该跟Python的装饰器有些类似?后面有机会再看。
- 因为主要不是写Java的,所以技术面试很尴尬的还是。面试官问我是不是有很强烈的意愿转Java,我回复的还行真的是想想太年轻了(捂脸)。
- 面试主要内容还是针对我的项目来的,主要是针对我的自动发帖工具来展开聊的。问了我当初考虑用selenium的原因是什么?然后跟我沟通是否能用HTTP请求访问的情况。之后提问到的是,如果提升到百万级别的高并发,该如何设计?我回答的是多台机器同时运行这个进程然后内部也可以用多线程啊什么的。不过呢,面试小哥哥的想法其实是要构建一个缓存层的设计理念,其实这些在我爬虫项目里面有涉及,但是当时就没想到了(头大)。后来又问到关于Redis的有关信息,Redis是多线程的还是单线程的之类的,只是简单用过的我一脸问号。最后提问环节,我问了一下链家上海是主要做什么的,他回答是做内部OA系统的,然后上班时间是8:20-9:30之间。看样子跟房源和客户好像也不怎么挂钩,想想也就算了。当然了,当我听到“等我们后续通知”的时候,我大概也知道凉了。感觉还是找自己熟悉的方面比较适合啊,然后果然复习一波还是有用的,最近还是抓紧看看基础知识好啦~
差不多算是第一次面试社会招聘吧,感觉是笔试题目比较简单,然后面试官会对项目比较感兴趣,同时面试的提问深度不浅,基本上会帮你拓展和挖到很深的地方,很考验思维的还是,下次加油啦!