2017.7.14 阿里巴巴校招面经

12 篇文章 0 订阅

【面试耗时 66min】

Q:说一个你印象最为深刻的项目经历?

因为本科是数学类专业,所以本科阶段没有接触过任何的计算机工程的开发,相对来说面向过程的编程会做的多一些。所以刚上研究生的时候接手的第一个web项目印象最为深刻,那个项目我们使用的是Mean框架,做的是一个供应商的物流订单管理系统,一共有六个大的功能模块,我涉及了两个模块的开发,分别是物流与通知公告。

Q:那这个项目对你来说最大的困难是什么?

因为之前没有接触过web开发,那种面向过程的思想扎的比较深,总觉得程序需要一个主函数,找不到主函数就不知道这个应用从哪里开始运行,思想上的转变应该是困难最大的。

Q:那你怎么克服的?

就是先对照着之前同学写过的一些demo自己动手写,经过自己的动手来发现web项目与之前自己印象中的程序的区别。

Q:问一下基础技术,你知道java里所有类的公共父类是什么吗?

object

Q:这个类里面常用的方法你能列举一下吗?

hashcode,tostring,equals,wait,notify,notifyall 嗯 常用的应该就是这些了。

Q:问一下hashcode跟equals,hashcode相等时equals的返回值可能是什么?equals的返回值是true的时候hashcode一定相等吗?

hashcode相等像个对象不一定,比如模2运算,3跟1哈希值相同但对象不相同;equals返回true时相同的对象一定能得到相同的哈希值。

Q:notifyall跟notifyall的区别?

notifyall是通知所有在这个对象锁上wait的线程启动,notify是只启动一个。

Q:启动哪一个?

呃....随便启动一个?对不起不太清楚。

(后来查了一下好像是由JVM决定的。)

Q:那说到多线程,你知道什么叫线程安全吗?

就是多个线程之间如果同时对一个共享的数据域进行写操作的话,可能会造成更新丢失。

Q:我听的懂,但是你能更好的描述一下吗?

用了银行取钱的那个例子....balabala

Q:那java里如何解决呢?

使用synchronized关键字对需要访问的对象加锁,这样多线程之间就能互斥访问了。

Q:你知道volatile关键字吗?

是可视性,就是一个变量的更新是对所有线程可见的,但是这个关键字并不是线程安全的。

Q:你说的比较接近,你知道怎么保证他的线程安全吗?

对不起,不知道。(其实我感觉能加锁的就加锁,干嘛用这个东西....心里活动)

Q:刚才说到哈希算法,比如你说的模2,你知道设计一个哈希算法需要注意的问题吗?

呃,不是太了解,我大概说一下吧,首先需要设计一个平衡性比较好的哈希函数,就是能让不同的对象得到不同的哈希值,在哈希表上比较分散的存储,尽量避免冲突。其他的我就不太清楚了。

Q:嗯,你知道一致性哈希问题吗?

之前的数据库课程有学过,我回忆一下:我记得是有个环装结构,然后把存储单元也往环上映射,把位于自己前面的数据存储到当前存储单位上?

(有关与一致性哈希与哈希算法的好文:点击打开链接 博主讲的很清楚)

Q:还是我能听懂,但是表述的我认为不是太清晰。那这样,你能讲一下有关与java的内存模型吗?

对不起关于jvm的知识我最近才刚刚开始学习,现在还不太清楚。

(其实内存模型啊,CG算法啊现在都已经比较熟了...如果再早几天学,唉...

关于JVM相关知识 这位博主我认为讲的不错的:点击打开链接

Q:问一个关于网络的问题,现在你在浏览器地址栏输入淘宝的地址,然后按下回车,网页就加载出来了,你能说说这其中的过程吗?

首先浏览器会解析URL,找到域名所对应的IP与端口号,然后根据对应的IP找到对应的服务器,在服务器上通过提交过来的HTTP请求找到对应的资源,返回到客户的浏览器,浏览器就会把返回回来的HTML页面解析出来。

Q:域名对应的IP去哪找?

去哪找???(我操???去哪找呢????)不知道。(后来查了是DNS服务器)。

Q:那一个域名对应的IP就是固定的了吗?

应该不是...吧?我不知道

Q:嗯好的,看来关于网络方面你不是太熟悉是吧,那问一下数据库(sql),现在给你一个用户表,其中有用户一个月来的购物记录,写个sql把所有用户这个月买了多少东西查出来。

select username, count(*) from user group by user_id;

(面试完赶紧建了个表试了试,贼虚.....还好对了)

Q:那查询每个用户花了多少钱呢?

使用SUM,把花费那个字段求和。select username,sum(price) from user group by user_id;

Q:嗯,你知道数据库的隔离级别吗?

对不起我不知道。(点击打开链接 其实文章里的内容我是知道的,只是我真的不知道这东西叫隔离级别。)

Q:你知道左连接跟右连接的区别吗?

我知道,我用之前那个用户表举了例子,balabala.....左连接右空右连接左空之类的。

Q:你知道常见的几种索引结构吗?

呃,对不起我只知道一种B+树索引,其他的记不太清楚了。

Q:你知道Spring IOC的底层实现的原理吗?

呃,底层原理吗?这个不清楚,我只知道Spring控制反转的机制是依赖注入。(后来查了一下好像是代理机制?有待学习了解)

Q:问一道小的算法题,现在有一个很长很长的整型数组,让你来统计有多少对儿下标小的元素比下标大的元素值要大的对儿数。举个例子,3,2,1=(3,2),(3,1),(2,1)一共有3对儿。

(我当时是听懂了题目的,这是剑指offer上用归并排序求数组逆序对的一道题目,但是我想装作我之前没有看过这道题目,就演了一波)

呃,您是说数组很长对吧?那是不是O2遍历会超过时限?那.....我想一下....

我认为可以使用归并排序的思想.....balabala


End:只记录了一些技术性问题,其中还穿插了一些压力型考题,比如:如果主管给了你一个你不太熟悉的任务但是要求一星期交付,你会怎么去解决类似的问题等。

面试官最后问你有什么想问我的问题的时候我稍微旁敲侧击的问了他一下评价,给的评价相对比较中肯:结合你个人的情况基础还行,后面如果有人联系你的话应该会是别人.....给我讲了一下后面的流程。整个过程耗时一小时六分钟,虽然还是有不知道的问题,但是跟实习生面试的时候相比感觉提升还是挺大的,面试官的评价也给了我希望,继续加油吧~








  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值