面试总结(一)——哈啰出行
面试总结(一)——哈啰出行
- 1、synchronized和volatile是干啥的
- 2、用数组实现队列
- 3、多边形的最小外接矩形
- 4、memcached和redis的区别
- 5、redis的通信协议、规范
- 6、Java实例化一个对象所分配内存的过程
今天是找实习以来的第一次面试,第一次就这样献给了哈啰,现在才知道自己是有多菜,看来得加紧学习啊。
面试题及答案如下(乱序):
1、synchronized和volatile是干啥的
答案:synchronized
它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用.
voliate
用在多线程,同步变量。 线程为了提高效率,将成员变量(如A)某拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) ,但是不能用其来进行多线程同步控制
2、用数组实现队列
答案:太简单,不解释了
3、多边形的最小外接矩形
刚开始一点思路都没有,下午吃饭时候突然顿悟,写下思路:
先建立坐标系,一般用直角坐标就好,先接收各个顶点的坐标,由于多边形不一定是凸多边形,所以先要预处理将多边形转化成一个凸包,求得凸包的中心(也就是重心啦,凸包各个顶点的均值就是中心坐标),再假定外接矩形必须是和坐标轴平行的,然后通过循环旋转多边形(for循环,0~360度,步长适当),不断计算外接矩形的面积,找到其中面积最小的情况,然后缩小范围,缩小步长再次求解即可。
4、memcached和redis的区别
- 性能上:性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。
内存空间和数据量大小:MemCached可以修改最大内存,采用LRU算法。Redis增加了VM的特性,突破了物理内存的限制。 - 操作便利上:MemCached数据结构单一,仅用来缓存数据,而Redis支持更加丰富的数据类型,(Redis不仅仅支持简单的k/v类型的数据,同时还提供string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)等数据结构的存储。memcache支持简单的数据类型,String。)也可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。
- 可靠性上:MemCached不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。Redis支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。
- 应用场景:Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
具体上:
- Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB
- Memcached只是个内存缓存,对可靠性无要求;而Redis更倾向于内存数据库,因此对对可靠性方面要求比较高
- 从本质上讲,Memcached只是一个单一key-value内存Cache;而Redis则是一个数据结构内存数据库,支持五种数据类型,因此Redis除单纯缓存作用外,还可以处理一些简单的逻辑运算,Redis不仅可以缓存,而且还可以作为数据库用
- 新版本(3.0)的Redis是指集群分布式,也就是说集群本身均衡客户端请求,各个节点可以交流,可拓展行、可维护性更强大。
Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。
- 小结:有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcached。对于两者的选择需要要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,则还是采用memcache,它也足够的稳定可靠。如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择redis。
5、redis的通信协议、规范
找了一篇博客,须得好好看看。
6、Java实例化一个对象所分配内存的过程
创建一个对象都在内存中做了什么事情?Person p = new Person();
先将硬盘上指定位置的Person.class文件加载进内存。
执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
在该实体空间中进行属性的空间分配,并进行了默认初始化。
对空间中的属性进行显示初始化。
进行实体的构造代码块初始化。
调用该实体对应的构造函数,进行构造 函数初始化。
将首地址赋值给p,p变量就引用了该实体。(指向了该对象)
面试总结(一)——哈啰出行相关推荐
- 记一次去哈啰出行面试的经历
哈啰出行面经分享跟新中... 在boss 上的一顿撩骚后终于约我面试喽. 首先到前台登记下,见面做个自我介绍.然后顺带讲讲 项目的经历. 完了之后,开始了熟悉的你答2我问环节 question 1 讲 ...
- 共享可写节包含重定位_未经许可成都街头现共享电动单车?哈啰出行:只是测试...
6月20日,在成都郫都区港通北三路上,出现了大量电动共享单车."能否使用,没有牌照会不会被交警拦下来?"尽管又出了一个新的公共出行工具,过往市民都提出了这样的担忧. ↑未经许可 成 ...
- 互联网日报 | 4月25日 星期日 | 我国首辆火星车命名为“祝融”;哈啰出行正式递交招股书赴美上市;快手搜索月活超2.5亿...
今日看点 ✦ 国家航天局正式公布中国第一辆火星车命名:祝融号 ✦ 哈啰出行正式递交招股书赴美上市,蚂蚁集团持股36.3%为第一大股东 ✦ 美团与沙县小吃集团达成全面合作,推动8.8万家门店数字化升级 ...
- 哈啰出行完成新一轮2.8亿美元融资 阿里首次入股
11月9日消息,哈啰出行今日宣布完成新一轮融资签约,涉及金额2.8亿美金,投资机构包括蚂蚁集团和阿里巴巴.这是阿里首次入股,也是今年以来哈啰出行获得的第2笔融资.至此,哈啰出行2021年完成融资超5亿 ...
- 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
4月24日消息,哈啰出行今日递交招股书,计划在纳斯达克上市,瑞信.摩根士丹利及中金公司为联席保荐人. 招股书显示,在过去的2018.2019.2020年度,哈啰出行的营业收入分别为21.14亿元.48 ...
- 哈啰出行架构调整:两轮电动车租售平台将升级为独立事业部
据新京报消息,近日哈啰出行执行总裁李开逐发布公司全员信,称原新业务部中的两轮电动车租售平台业务将升级为独立事业部. 哈啰出行内部人士向TechWeb确认了这一消息,该人士称,"电动车平台事业 ...
- 哈啰出行回应单车违规投放:将尽快缴纳罚金 积极整改
针对被北京市交通执法部门实施行政处罚一事,哈啰出行官方回应称,罚金部分我们将尽快缴纳,同时配合管理.积极整改,成立专项工作组投入到后续整改工作中去. 今早北京市交通委官微"交通北京" ...
- iPhone11 全线降价;哈啰出行否认大量裁员;LineageOS 17.1 发布| 极客头条
整理 | 屠敏 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 一分钟 ...
- 地铁+单车一体化智慧接驳,哈罗单车升级为哈啰出行
一提起共享单车,许多人脑海中估计第一时间都会浮现出ofo小黄车和摩拜单车.但是你知道么?有一家才刚刚成立两年的共享单车,以行业黑马姿态一路风驰电掣,截至目前为止已经入驻300多个城市和260多个景区, ...
最新文章
- Java Day01-2
- 利用Powershell SSH-Session 工具管理 linux或网络设备
- oracle ORA-00119和ORA-00132解决方法
- 拦截器获取请求参数post_SpringBoot拦截器如何获取http请求参数
- 第一章:数组与指针概念剖析
- java table 设置长度_Java字节码lookupswitch和tableswitch总指令长度
- .net开发MIS系统的难处.
- LVS负载均衡DR模式+keepalived
- Linux中如何查找占用硬盘体积最大的文件方法
- Flutter实战之Sqlite的用法入门
- 计算机二级java应用题怎么答,2015年计算机二级考试JAVA基本操作和简单应用题
- Visio PAD模板
- 遗传算法(geatpy)
- 聊一个自己写的MVC框架
- Java-Collection集合之单列集合List,以及遍历方式
- 【数据分析与挖掘】基于Apriori算法的中医证型的关联规则挖掘(有数据集和代码)
- 一种基于蓝牙的电视锁实现方案
- 母牛python_《Python》 母牛的故事Hello, world用筛法求之N内的素数
- SpringBoot/Spring Cloud/Docker
- 中国人民大学与加拿大女王大学金融硕士-作为金融人你深知,投资学习是一本万利的