開發與維運

開發與維運

【面小易-面经11】阿里巴巴Java研发工程师5面经验

“我是面小易,机智又聪明。面试不眨眼,Offer不手软。” 我面小易又来啦,今天要和大家一起分享的是一位投递阿里巴巴Java研发工程师同学的经验,这位同学在大三才开始转向Java,但是能够从他对于面试问题的总结中看出他的基础知识很牢固和扎实,因此最终能够一路过关斩将,通过5轮面试最终斩获了Offer。 以下为正文 前言 在接触Java之前我接触的比较多的是硬件方面,用的比较多的语言就是C、C++。到了大三我才正式选择Java方向,到目前为止使用Java到现在大概有一年多的时间,所以Java算不上很好。刚开始投递的时候,实习刚辞职,也没准备笔试面试,很多东西都忘记了。 所以,刚开始我并没有直接就投递阿里,毕竟心里还是有一点点小害怕的。于是,我就先投递了几个不算大的公司来练手,就是想着刷刷经验而已或者说是练练手(PS:还是挺对不起那些公司的)。面了一个月其他公司后,我找了我实验室的学长内推我,后面就有了这5次面试。面试阿里之前我对自己的并发知识不太有信心,就花时间看了几本并发方面的书籍,网上也找了好多博客来看。 下面简单的说一下我的这5次面试:4次技术面+1次HR面,希望我的经历能对你有所帮助。 面小易说:这位同学非常谦虚,但是能够看出他属于“有心人”,一方面能够找一些面试“实战”来锻炼自己,在面试阿里巴巴之前,他已经经过了一个月的面试,可以说是身经百战了,这时候觉得面试状态不错的时候再找学长帮他内推,可以说规划非常周密。另外一方面他明确地知道自己哪里存在短板和不足,就会进行针对性学习和补充,比如对于并发这部分不够有信心,那么就找几本这方面的书来查漏补缺,这样的方法的确值得我们学习和借鉴。 一面(技术面) 自我介绍(主要讲自己会的技术细节,项目经验,经历那些就一语带过,后面面试官会问你的)。 聊聊项目(就是一个很普通的分布式商城,自己做了一些改进),让我画了整个项目的架构图,然后针对项目抛了一系列的提高性能的问题,还问了我做项目的过程中遇到了那些问题,如何解决的,差不读就这些吧。 可能是我前面说了我会数据库优化,然后面试官就开始问索引、事务隔离级别、悲观锁和乐观锁、索引、ACID、MVVC这些问题。 浏览器输入URL发生了什么? TCP和UDP区别? TCP如何保证传输可靠性? 讲下跳表怎么实现的?哈夫曼编码是怎么回事?非递归且不用额外空间(不用栈),如何遍历二叉树。 后面又问了很多JVM方面的问题,比如Java内存模型、常见的垃圾回收器、双亲委派模型这些。 你有什么问题要问吗? 面小易说:按照以往的经验,一面更加侧重于Java的基础知识,广度比较大,审视不一定非常深入。但是这个同学的一面似乎有些不同,上来就针对于项目进行了提问,并且还问到了很多JVM相关的知识点,因此也能够看出,技术面试也是因人而异的,如果你技术的确比较强,那么问的问题也可能更加深入,这样给面试官留下的印象也会更加深刻。 二面(技术面) […]

開發與維運

Python 制作微信全家福,你就是朋友圈最亮的仔!

目录:0 引言 1 环境 2 代码实现 3 后记 0引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像。效果如下图,出于隐私考虑,这里作了模糊处理。 是不是很炫,而且这还是独一无二的,毕竟每个人的微信好友是不一样的。本文就教大家用Python来实现这种效果。 1 环境 操作系统:WindowsPython版本:3.7.3 2 代码实现 我们需要首先需要获取好友的头像信息,接下来处理图像并完成图像的拼接。 2.0 准备工作 在这里,我们登录微信获取好友信息,使用的是

開發與維運

小狗分类器,你家的狗子是个什么狗?

项目介绍 小狗分类器可以做什么?通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息。这就是所谓的「机器学习」,让机器自己去“学习”。我们今天要做的这个分类任务,是一个“监督学习”的过程。监督学习的主要目标是从有标签的训练数据中学习模型,以便对未知或未来的数据做出预测。我给大家讲一个例子。用“房子的尺寸”预测“房子的价格” 图片来自(吴恩达-机器学习) X-房子的尺寸(小狗的图片) Y-房子的价格(小狗的类别) 如图,我们根据已经有的数据集(图上的坐标),可以拟合出一条近似符合规律的直线。这样,再有新的房子尺寸(1250),我们就可以估算出房子的价格(220k)了。有了这些简单的基础,可以开始搞了。 效果展示 训练集的准确率为0.925,但测试集只有0.7说明过拟合了,可以再增加一些图片,或者使用数据增强,来减少过拟合。 测试了两张图片,全都识别对了! 编写思路 整个分类器的实现,可以分为以下几个部分: 1 准备数据集 我们可以通过爬虫技术,把4类图像(京巴、拉布拉多、柯基、泰迪)保存到本地。总共有840张图片做训练集,188张图片做测试集。数据集的准备,可以参考上一篇文章。 点击上图,阅读原文 2 数据集的预处理 1) 统一尺寸为1001003(RGB彩色图像) 2)

開發與維運

在Win上做Python开发?当然是用官方的MS Terminal和VS Code了

在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?本文将带你了解如何利用微软官方维护的 MS Terminal 与 VS Code,来为 Python 开发保驾护航。 使用 Windows 系统一大好处是它的应用太丰富了,甚至强大的 GPU 也能在闲暇时间做点其它「工作」。然而与 Linux

開發與維運

受用一生的高效 PyCharm 使用技巧(四)

大家好,这个系列到今天已经是第四篇了,按照惯例,本次还是分享 5 个。 16. 快速定位到错误行 前几天打开 PyCharm,发现在导航栏这里出现了很多红色波浪线,有过 PyCharm 使用经验的同学,这是代码出现了错误。 顺着波浪线,我一层一层地展开目录树,终于找到了那个包含错误的文件。由于是手误,我也不知道我改动了哪一行,看了下这个文件,有将近8000行的代码,难道一行一行地去找? 不,这绝对不是使用 IDE 正确的方式。 遇到问题,就应该尝试去寻找快捷方法,有没有办法,可以一下子定位到错误代码呢? 这时候,我想起了PyCharm 有提供给我们一个 Keymap 的面板,可以很方便的设置、查询快捷键。说不定我在那里可以找到我想要的答案 我在搜索框输入 Error,就找到了快速定位到错误位置的快捷键

開發與維運

黑客们会用到哪些Python技术?

Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测工具)。Python允许开发者编写脚本处理远程服务,处理二进制文件,与C语言库(或者Java的Jython/。Net的IronPython)以快速且简单的方式进行交互。它“内置电池”原则的巨大标准库,为开发省去对其它框架或者语言的依赖。 我想跟读者们分享个人的Python编程经历,这些也许会对你未来的工作有所帮助,让这个世界变得更加安全一些(注:大多数例子基于Python3.0以上版本编写的,有些可以兼容python所有分支)。 1. 环境配置 对于你要编写的大多数工程或者脚本,建议读者们最好将所有的依赖放在同一个位置(除了有些在特殊工程中才用到的依赖)。为了满足上述要求,需要用到一个叫virtualenv的工具(Python3.3已经包括该工具),这个工具有一个简洁的功能,就是在不打乱全局环境的基础上,为你的Python工程生成独立的环境: 2. 安装依赖包 很多时候读者们会发现,借助大型python社区中的python库编写的个人工具,可以帮助我们很快得到结果。你可以通过个人软件管理包或者可用的python软件包管理器安装这些库,其中最权威的就是pip工具了。有了pip,你可以全局安装这些依赖包(#pip install),或者逐用户安装( pip install)。读者可以手动地使用个人发行版包管理器,或者基于Python3.4提供的库,安装pip包。 有一个基本的python包叫iPython,通常在我不是100%肯定该如何解决当前任务,想尝试做些实验时,我会安装这个依赖包。IPython是常用的python命令行,它是基于Python编写的,有以下几个特点: 动态对象内省 通过Tab完成本地命名空间 持续的历史记录 会话日志 路径补全 JIT调试器 自动缩进 和平常一样,通过pip安装也很简单:$

開發與維運

[译] 在 iOS Swift 中的懒加载变量

原文地址:lazy var in ios swift原文作者:Abhimuralidharan译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:kirinzer校对者:portandbridge, iWeslie 这篇文章解释了在 Swift 中懒加载变量是如何工作的,你必须对闭包有一些了解。 阅读这篇文章获取更多关于闭包的信息. 当我们进行 iOS 开发时,我们应该非常关注应用程序的内存占用情况。如果应用程序很复杂,那么内存问题就会是对于开发者的一个主要的挑战。所以,首先考虑到内存分配问题的开发者能够真正的写出优化的代码。除非确实有必要,否则开发者要避免做一些耗时的工作。那些复杂的分配内存操作会消耗更多的时间,并且对于程序的性能有严重的影响。 Swift 有内置在语言中的机制,可以即时的计算那些耗时工作。它叫做懒加载变量。这种变量只有在你第一次需要它的时候才被指定的方法创建。如果从没有使用过该变量。那么方法就不会运行,所以它可以帮助减少一些处理时间。 苹果的官方文档写道: 一个懒加载储存属性是种只有在首次使用时,才计算其初始值的属性。你可以通过在声明前加 lazy 修饰符来标示一个懒加载存储属性。 你必须将一个懒加载属性声明为一个变量(通过

開發與維運

Symbol 的作用

文章来源:掘金翻译计划 作者:xiaoweiylv —- Symbols 的出现是为了什么呢? 翻译自 medium Symbols 是 JavaScript 最新推出的一种基本类型,它被当做对象属性时特别有用,但是有什么是它能做而 String 不能做的呢? 在我们开始探索 Symbols 功能之前,我们先来看一下被很多开发者忽略 JavaScript 的特性。 背景: JavaScript

開發與維運

[译] 手摸手教你如何轻松发布私有 App

原文地址:Publishing private apps just got easier原文作者:Jon Markoff译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:Qiuk17校对者:PeachChou, xiaxiayang 来自插图 Virginia Poltrack 不论你的团队拥有 5 个还是 100 个 App,你总能找到帮你管理 Play Store 列表的自动化工具。Google

開發與維運

[译] 2019 React Redux 完全指南

原文地址:A Complete React Redux Tutorial for 2019原文作者:Dave Ceddia译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:xilihuasi校对者:xionglong58、Fengziyin1234 想要理解 Redux 完整的工作机制真的让人头疼。特别是作为初学者。术语太多了!Actions、reducers、action creators、middleware、pure functions、immutability、thunks 等等。怎么把这些全都与 React 结合起来构建一个可运行的应用?你可以花几个小时阅读博客以及尝试从复杂的“真实世界”应用中研习以将它拼凑起来。在本篇 Redux 教程中,我会渐进地解释如何将 Redux 与

Scroll to Top