Java工作4年从美团、百度、阿里、京东面试回来感想

又是一个失眠的夜晚,反正睡不着,写篇日记总结一下我最近面试经历吧。

2019年5月1日办理了离职手续,离开了万通中心,也算是和我的第二个东家正式说了再见,其实还是很喜欢国贸的,这是个美妙的地方,容纳着很多金融界人才们的梦想,每每晚上走到这里你会感叹帝都的夜景好美。只可惜这里的多数人都顾不上欣赏这里的风景,每个人都生活在压力下,成为了金钱的奴隶,但这并不是什么坏事,因为他们上有老下有小,身上背负着责任,也正是他们的身体力行才造就了CBD的繁华,而我最终选择了离开这个地方。

网友的问题我创建了个Java技术offer群:742991985。

我从不否认我的离开和钱有关,这确实是其中一个因素,我也像所有人一样背负着责任,所以我需要钱,但我更想说这次的离开是为了寻求一个对我而言更大的舞台,让自己更加快速的沉淀和成长。我曾经试图向我的领导们陈述我的价值观,我并不认为钱和理想是互斥的,难道赚的越少你的工作就越有价值么,很明显不是的。

美团网

640?wx_fmt=png

第一个投的是美团网,去年刚上市的,发展比较迅速、美团的技术在国内也是数一数二的。

先填了一份资料,然后是就是面谈了

算法和数据结构以及架构设计方面,答的很不好,好多都忘了。

一、自己实现一个hashMap,这个难不倒我,jdk的源码中最熟悉的就是Collection包了,使用数组和内部类完成哈希表的数据结构,再通过hash算法和链表操作完成哈希表的插入查询等操作;

二、并发编程中的生产者消费者模式代码,没写出来,忘记了,真是不应该哦,最简单的方式就是使用wait和notify去阻塞唤醒(这么基础的东东我都能忘),当然还有很多优雅的写法,比如使用可重入锁(ReentrantLock),使用锁计数器(CountdownLatch)等,当时一种都没想到,自责中;

三、字符串的一道算法题,这类小case,就是位图法,毫无压力的写出;

四、写一个自己熟悉的架构图,于是我把我的老东家的系统架构搬了上去,简单来说就是通过hessian将前台调用逻辑与后台业务逻辑解耦,实体可以通过序列化和反序列化传递(这是hessian最擅长干的事情),最终提高后台业务逻辑接口的可重用性以及系统的可维护性。

还有两三道题目忘记是什么了。时间还是很紧的,只有一个小时时间。交卷之后开始面试,一面继续聊了聊jdk的Collection包,还有就是之前在公司所做项目的部署思想。二面就是聊聊java并发锁机制,为什么要用读写锁而不用synchronized这种同步锁,事务隔离性的理解,为什么会有脏读,可重复读,提交读等,spring的事务管理是如何实现的,编程式如何实现,aop式如何实现,动态代理的原理是什么,事务的传播性的理解。

总之都是这类比较重视原理的问题,答的还可以吧,最后就是部门负责人来直接面试,谈谈为啥离职,期望薪资什么的,也聊了下技术。

问我会不会来,最后我回答我考虑一下,下周三给回复,然后就离开了。感觉公司环境很好,饮料零食什么的都是免费吃。

百度

640?wx_fmt=png

第四个百度,百度今年是停止社招的,大部分部门都不社招只有校招,但也有少数部门有特批名额,于是就去试了一把。

一面刚来就是写代码,一个单链表的算法题目,写完,面试官很满意点点头,随后面试官发问在你的项目中spring是如何管理zookeeper的,答:balabala;

了解zookeeper的leader选取算法吗,讲一下他的流程,知道zab算法吗,讲一下他的流程,汗,问的问题都太变态,没想到会问的这么深,zab算法太复杂了,zab是基于paxos的,而paxos可是获得图灵奖的算法,勉强说了一下,说的很心虚,有好多盲点自己也没搞清楚,不过好在面试官也不往下问了,其实我估计他也不见得会(窃喜),随后让我稍等一下;

一会儿过后二面面试官过来了,是个成熟的大叔,二面只问了两个东西,一个jvm,一个并发编程,jvm主要是性能调优,jstack的使用,full GC和minor GC的分析等,并发编程问的很细,发问多个线程达到同一个状态然后再一起执行,达到某一个状态之后再继续并发执行,这种怎么实现,答:jdk5之后有一个CyclicBarrir,
通过这个来实现,它可以重用等balabala说了一些;

再发问读写锁中加读锁后如何避免写线程饿死,答:加策略balabala,发问如何实现控制线程在某段时间内完成,不完成就撤销,答:实现Callable接口,返回FutureTask类或者Future接口,然后去触发撤销操作。

开始问项目,描述一下对账系统,balabala…数据量大吗,并发量高吗,数据库怎么设计的等,随后让我等一会,又过来一个面试官,问我业务,你在第三方支付公司,能不能讲一下支付的技术流程,balabala…把自己理解的支付流程讲了一下,最后补了一句,支付的细节业务很复杂,我也没完全明白呢,汗,让我等了一会,随后面试官说你回去等消息吧,我想完蛋了吧,难道因为业务不熟被刷,真不甘心;

心凉了一个星期,结果hr在星期一打电话说让星期四去最后一面,是技术总监的面试,星期四屁颠屁颠的去了(话说百度大厦离国贸太远了,地铁每次要坐一个半小时,我也是跪了),四面开始,发问异步处理的幂等性,不是很难,唯一性索引或者开发分布式锁呗,随后风格立马就转了,不问技术了,发问你觉得你来百度能给百度带来什么样的价值,你希望你加入的百度的团队是一个什么样的团队,你如何和产品经理沟通,假如你和其他研发接口制定无法统一你该如何解决等,一点准备都没有,回答的结结巴巴很是不好,哎,听天由命吧!

阿里

640?wx_fmt=png


第五个面的是阿里,百度面完等消息,闲来无事查看公司招聘信息,看到阿里招聘薪资很诱人。

哈哈,我就是这样一个无节操的人,开始是电话面试,然后是面试,二面和三面,主要面试技术点有

JVM相关:

  • jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等

  • 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms

  • 当出现了内存溢出,你怎么排错

  • JVM内存模型的相关知识了解多少

  • 简单说说你了解的类加载器

  • JAVA的反射机制


架构设计与分布式:

  • tomcat如何调优,各种参数的意义

  • 常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的,Redis的使用要注意什么,持久化方式,内存设置,集群,淘汰策略等

  • 如何防止缓存雪崩

  • 分布式集群下如何做到唯一序列号

  • 设计一个秒杀系统,30分钟没付款就自动关闭交易

  • 如何做一个分布式锁

  • 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗

  • MQ系统的数据如何保证不丢失

  • 分布式事务的原理,如何使用分布式事务

  • 什么是一致性hash

  • 说说你知道的几种HASH算法,简单的也可以

  • 什么是paxos算法

  • redis和memcached 的内存管理的区别等等

后面给了我offer。但是最近996不知道如何选择。

总结:

就写到这了,写的有点多了,也算是给这两个星期面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。很多网友都问我技术这么好是怎么做到的,平常在工作积累和学习吧。

在这儿免费推荐点资料给大伙学习。

640?wx_fmt=png


在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值