面试

为什么算法专家都建议学好C++?

点点圈 提交于 2020-12-30 16:52:53
C++一直被称作永不过时的开发语言,比如游戏、服务器、人工智能等领域都必须用到C++! 虽然网上有很多教程和资料,但仍有很多人说C++难学,究其原因是没有找到正确的学习方法! GoogleTest框架一直广泛应用于C/C++项目测试 ,是一个非常重要的测试软件。 它的开发过程几乎覆盖C++核心知识和C++项目开发经常遇到的问题,是新手锻炼C++开发能力最好的项目之一! 因此,今天就给大家分享1个《C++难点突破训练营》! 这个训练营,老师会带你使用C++实现快速排序算法,深刻理解C++编程思想。 而且会重点带你经历,从GoogleTest实现原理到构建项目的全流程,让你能够从0到1独立开发一个C++项目,快速提升项目能力! 特训营老师胡船长是我一直非常敬重的大神,他早在10年前就获得了ACM亚洲区金牌,并2次晋级全球总决赛。 此后任职百度知识图谱部,推动开发百度NLP推理引擎开发。 他也会从自己在百度多年的面试角度出发,讲解大厂面试的核心关键点,教你如何准备大厂面试,拿下高薪offer! 特训营原价 599 元,靠着关系搞到 100 个免费名额, 0 元即可入学!只要你是统招本科及以上学历,就可以抢占! 长按3秒 即可扫码 你现在长按识别上方二维码或点击阅读原文,即可直接抢占 0 元免费名额。 来源: oschina 链接: https://my.oschina.net/u

【奇淫巧技】Java动态代理(JDK和cglib)

时光怂恿深爱的人放手 提交于 2020-12-30 14:29:17
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。 代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。 首先看一下静态代理: 1、Count.java package net.battier.dao; /** * 定义一个账户接口 * * @author Administrator * */ public interface Count { // 查看账户方法 public void queryCount(); // 修改账户方法 public void updateCount(); } 2、CountImpl.java package net.battier.dao.impl; import net.battier.dao.Count; /** * 委托类(包含业务逻辑) * * @author Administrator *

网络架构及其演变过程

瘦欲@ 提交于 2020-12-30 06:51:00
一、单机架构 应用领域: 植物大战僵尸 office 二、CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端。 客户端:用户安装的软件; 服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务逻辑。 2.1 CS架构要求 用户操作系统安装客户端;产商操作系统部署服务端 每个用户需要独立安装软件、服务端升级也要每个用户升级 2.2 面试题:数据放在服务端和客户端的利与弊? 答: 服务端统一处理有更好的安全性和稳定性而且升级比较容易,不过服务器负担就增加了。 客户端将负担分配到每个用户,从而可以节约服务器资源,安全性和稳定性可能会有一定的问题,但是升级比较麻烦,每个安装的客户端程序都需要升级,另外为了节省网络资源,通过网络传输的数据应该尽量减少! 三、BS架构 应用领域: 淘宝 京东 统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理。 3.1 两种BS架构 OSI主要用于教学(万恶的大学、绿本的计算机书),我们在编程的时候用的都是TCP/IP。 TCP/IP的对应关系,就像我们在淘宝购物,所在位置有的快递(网络接入层),告诉卖家地址(网络互联层)、快递送货(运输层)、收到货物拆包使用(应用层)。 注意:

【剑指offer题解】二维数组中的查找

大兔子大兔子 提交于 2020-12-30 04:35:07
前言 众所周知,对于面试而言,《剑指offer》是一本“好书”。 如果你和我一样是个算法菜鸡,那么最推荐的是先把剑指offer的题目搞明白,其次再去刷LeetCode等习题,这样对于面试突击非常有用,因为面试官最常考的算法题都在这本书里。 如果你发现看这本书很吃力,可以先直接参考些网上的代码,照着抄一遍,理解下算法题是应该解题,多抄几道题目,你就对算法题的做法有感觉了,这个高考做固定套路数学题是一样的。 对于剑指offer题解这个系列,我的写作思路是,对于看过文章的读者,能够做到: 迅速了解该题常见解答思路(奇技淫巧不包括在内,节省大家时间,实在有研究需求的人可以查阅其它资料) 思路尽量贴近原书(例如书中提到的面试官经常会要求不改变原数组,或者有空间限制等,尽量体现在代码中,保证读者可以不漏掉书中细节) 尽量精简话语,避免冗长解释 给出代码可运行,注释齐全,关注细节问题 代码能够通过牛客网在线编程《剑指offer》测试 《剑指offer题解》系列 你可以通过以下几种途径查看我的《剑指offer题解》系列: 关注我的公众号:后端技术漫谈,点击公众号导航栏:剑指offer题解 剑指offer题解专栏(CSDN) 各大博客平台我的账号(见本文最下方) 题目介绍 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序

每秒上千订单场景下的分布式锁高并发优化实践!

∥☆過路亽.° 提交于 2020-12-30 04:08:28
本文转载自 石杉的架构笔记 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景? 他说他当时没答上来,因为没做过没什么思路。其实我当时听到这个面试题心里也觉得有点意思,因为如果是我来面试候选人的话,应该会给的范围更大一些。 比如,让面试的同学聊一聊电商高并发秒杀场景下的库存超卖解决方案,各种方案的优缺点以及实践,进而聊到分布式锁这个话题。 因为库存超卖问题是有很多种技术解决方案的,比如悲观锁,分布式锁,乐观锁,队列串行化,Redis原子操作,等等吧。 但是既然那个面试官兄弟限定死了用分布式锁来解决库存超卖,我估计就是想问一个点:在高并发场景下如何优化分布式锁的并发性能。 我觉得,面试官提问的角度还是可以接受的,因为在实际落地生产的时候,分布式锁这个东西保证了数据的准确性,但是他天然并发能力有点弱。 刚好我之前在自己项目的其他场景下,确实是做过高并发场景下的分布式锁优化方案,因此正好是借着这个朋友的面试题,把分布式锁的高并发优化思路,给大家来聊一聊。 库存超卖现象是怎么产生的? 先来看看如果不用分布式锁,所谓的电商库存超卖是啥意思?大家看看下面的图: 这个图,其实很清晰了

JVM的内存分代,这篇文章帮你理一理

放肆的年华 提交于 2020-12-29 23:25:54
听说微信搜索《Java鱼仔》会变更强哦! 本文收录于 JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 每天一个知识点 JVM的内存分代你了解多少? (一)JVM分代 堆内存是JAVA虚拟机所管理的内存最大的一块,Java堆被所有线程共享,几乎所有的对象实例都是在堆中分配内存,因此Java的堆是垃圾回收的主要区域。 JVM的内存分代讲的就是堆内存的分代,为了更加高效的回收垃圾,将内存划分为了多个generation(代)。 JVM堆可以划分为新生代、老年代、永久代(JDK1.7),在JDK1.8中,永久代被元空间(Metaspace)所代替,并且元空间已经不在堆中了。下面我们会讲两者的区别 (二)永久代和元数据的区别 永久代是HotSpot虚拟机特有的概念,并且在JDK1.8之后,永久代就彻底消失了。 永久代存储类信息、常量、静态变量、即时编译器编译后的代码等数据,并且永久代必须指定大小限制,因此就会导致性能问题和内存溢出的问题。永久代会给GC带来不必要的复杂性。 元空间的本质和永久代类似,但是元空间并不在堆中,而是直接使用了本地内存,元数据可以设置限制,也可以不设置,它的大小仅受本地内存限制。 (三)什么是新生代和老年代 新生代和老年代是垃圾回收最主要的区域,我们也主要来讲解这两个区域,看下图 新生代和老年代都在堆内存中

招工作要注意的坑

杀马特。学长 韩版系。学妹 提交于 2020-12-29 17:52:52
公众号:民工哥技术之路 文/作者:民工哥 虽说年前就有很多人在修改简历、刷新简历,但是为了大家心中所谓的年终奖,99.9999%的人都会选择沉默,有一种「明修栈道,暗度陈仓」意味。 拿完了年终奖,过完了春节,老子早TMD的不想干了,终于不用在你「对象是种扣嗖的老板或领导」这里受你这等鸟气了。于是乎,吭哧吭哧的埋头苦写简历,狂撒网,做梦都想有朝一日能出任CEO,迎娶白富美,走上人生的巅峰。 理想是丰满的,现实是残酷的,搞不好,美梦没有做完,就会吃上一记当头一棒,将你打入「绝情谷」谷底。所以,跳槽找工作一定要慎重,慎重,再慎重。 之前也写过类似的一篇文章「与努力同样重要的是,学会做好这 6 点!」,混职场的读者可以参考参考。但今天,我不们不讲混职场,只讨论求职找工作中如何避坑,否则,又像网友调侃那样:这是跳出一坑,又入一坑啊,总之坑不完啊。 1、创业公司的坑 这里并不是讲创业公司不好,不喜者请绕道。 创业公司其实要看公司的发展前景与创始人的战略眼光、思维方式、处事等一些因素,好的创业公司它的发展是飞速的,当然初期活肯定也会累一点,身兼多职的情况也会存在,但报酬薪水是成正比的,这类创业公司其实适合有一定工作经验,但寻求好的平台施展的读者们加入,抓住机遇,说不定就改变了你一生的命运。 但,坑的公司也有,比如说:创业初期,待遇比你原来的还低,甚至80%不到,老板会讲初始员工有股权、期权

阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经

▼魔方 西西 提交于 2020-12-29 17:18:19
在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助。 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试。 面经如下: 一面 (简历评估): 1、自我介绍 2、TCP与UDP的区别 3、TCP三次握手说一下(把流程说一遍,这里以为会继续问为什么不是两次或者四次,结果没有) 4、看你项目用到线程池,说一下线程池工作原理,任务拒接策略有哪几种 5、进程和线程的区别 6、ArrayList与LinkedList的区别 7、线程安全与非线程安全集合说一下,底层怎么实现的(hashmap,concurrenthashmap) 8、Java内存模型,方法区存什么 9、数据库事务隔离级别说一下 10、synchronized和lock区别,可重入锁与非可重入锁的区别 11、看你的项目用了悲观锁和乐观锁,说一下区别 12、算法题:圆圈中最后剩下的数字 二面 (部门主管): 1、说一下Spring的IOC和AOP,底层什么原理 2、动态代理有几种,Jdk与Cglib区别 3、数据库三大范式 4、左连接和右连接说一下,内连接呢 5、数据库索引有几种 6、数据库引擎你认识几种,innodb 和myisam 区别,你的项目用到哪个引擎 7、若hashcode方法永远返回1会产生什么结果 8、Error与RuntimeException的区别 9

朝鲜黑客组织 Kimsuky 的持续性网络攻击

ε祈祈猫儿з 提交于 2020-12-29 17:04:26
作者:知道创宇404实验室翻译组 原文链接: https://us-cert.cisa.gov/ncas/alerts/aa20-301a 一、概要 网络安全报告书由网络安全基础设施安全局(CISA)、联邦调查局(FBI)和美国网络司令部国家宣教部队(CNMF)联合撰写,主要描述了针对朝鲜高级黑客组织 Kimsuky 网络攻击所使用的战术、技术和程序(TTP)。美国政府将该网络攻击称为HIDDEN COBRA,有关HIDDEN COBRA的更多信息,请访问 https://www.us-cert.cisa.gov/northkorea 。 本文描述了截止2020年7月已知的Kimsuky黑客网络攻击事件,旨在保护相关组织免受该黑客影响。 单击此处 以获取PDF版本。 二、主要发现 Kimsuky黑客组织可能自2012年开始运营。 Kimsuky很可能是朝鲜政府支持的全球情报搜集任务。 Kimsuky运用常见的策略窃取数据。[ 1 ],[ 2 ] Kimsuky最可能使用网络钓鱼获取初始访问权限。[ 3 ] Kimsuky的情报收集针对韩国、日本和美国。 Kimsuky重点关注朝鲜半岛、核政策、外交政策及国家安全问题的相关信息。 Kimsuky特别关注对象: 各领域专家、智囊团、韩国政府机关;[ 4 ],[ 5 ],[ 6 ],[ 7 ],[ 8 ] CISA

【自动化测试入门】自动化测试思维

回眸只為那壹抹淺笑 提交于 2020-12-29 12:50:20
01.自动化测试入门难? 很多人一听到自动化测试,就会心想:哇、这个人好厉害啊,我要努力学代码和他一样强。 自动化测试入门真的应该第一时间上手学代码吗? 答案是否定的。自动化入门难只是因为很多人搞错了方向! 基于本人在测试团队培训自动化的实际经历,自动化测试入门首先该了解的并不是如何写代码或者使用工具实现自动化测试脚本,而是应该首先了解自动化测试思维。 如果你入门就学python/java,那你很有可能会被立马劝退。身边无数的测试同学验证了这句话,正在看本文的你是否也有类似的经历? 自动化测试思维我将其归纳为下面这句话: 自动化测试是将人工测试的动作转化成机器模拟人工执行测试动作的技术。 作为小白的你,肯定一头雾水。下面我将基于不同的自动化测试类型,带你来深度了解下自动化测试思维 1.WEB-UI自动化测试 WEB功能测试☞测试人员使用谷歌或者火狐浏览器打开项目地址,人工操作页面+人眼检测页面变化+sql确认数据入库,测试软件的功能是否符合预期。 WEB自动化测试☞脚本或工具打开谷歌或者火狐浏览器打开项目地址,脚本操作页面+脚本检测页面变化+动态sql确认数据入库,测试软件的功能是否符合预期。 2.APP-UI自动化测试 APP功能测试☞测试人员使用手机/平板打开项目APP,人工操作页面+人眼检测页面变化+sql确认数据入库,测试软件的功能是否符合预期。 APP自动化测试