面试大总结之一:Java搞定面试中的链表题目 分类: Algorithm Interview2013-11-16 05:53 11628人阅读 评论(40) 收藏 举报 链表是面试中常出现的一类题目,本文用Java实现了面试中常见的链表相关题目.本文主要参考整合重写了<轻松搞定面试中的链表题目>和 <算法大全(1)单链表>两篇大作.两篇大神的实现分别是C和C#,因为我更喜欢用Java面试,所以用Java重写了所有实现,并附上自己的一些思考注释.算法大全(1)单链表 尚未有一些问题尚…
package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Stack; /** * http://blog.csdn.net/luckyxiaoqiang/article/details/7518888 轻松…
package LinkedListSummary; import java.util.HashMap; import java.util.Stack; /** * http://blog.csdn.net/luckyxiaoqiang/article/details/7393134 轻松搞定面试中的链表题目 * http://www.cnblogs.com/jax/archive/2009/12/11/1621504.html 算法大全(1)单链表 * * 目录: * 1. 求单链表中结点的个…
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章 系列文章将会把一些技术学习方法.过程.要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间.所谓授人以鱼也要…
## 前言 随着当今处理器计算能力愈发强大,可用的核心数量越来越多,各个应用对其实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行.在此背景下,Java自JDK1.5 提供了自己的多线程框架,称为 [Executor 框架](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html). ## 1. Executor 框架是什么? ### 1.1 简介 Java Doc中是这么描述的 > An…
前言 说起Java面试中最高频的知识点非多线程莫属.每每提起多线程都绕不过一个Java关键字--synchronized.我们都知道该关键字可以保证在同一时刻,只有一个线程可以执行某个方法或者某个代码块以保证多线程的安全性.那么,本篇文章我们就来揭开这个synchronized的面纱. 线程安全的实现方法 在详细介绍synchronized之前,我们首先了解一下实现线程安全的不同方式,了解synchronized是如何实现线程安全的理论基础,做到心中有数.目前主要有三种线程安全实现方法:互斥同步…
场景一:一般我们遇到需要新建model,常规做法就是创建一个类,老老实实的定义好model中的所有属性,一般来说属性对应的set方法和get方法都是少不了的,有时候还需要toString甚至equals和hashCode方法. 现在的IDE已经很成熟了,一般不会手写set和get方法,采用IDE自带的快捷方式自动生成居多.如下图所示 该方式相对手写方法来说,效率已经有了很大的提升,但还是有进一步的提升空间(下文会介绍).而且该种方式维护性较差,当需要修改某个属性名称或者属性类型时,对应的set和…
如果你是一位前端开发工程师,对"跨平台"一词应该不会感到陌生.像常见的前端框架:比如React.Vue.Angular,它们可以做网页端,也可以做移动端,但很少能做到跨PC.Mac端,也就是我们熟知的Windows.Linux以及macOS上的应用程序.即使有,受限于JS的性能瓶颈,当有大量的科学计算需求时,则会略显疲态. 有没有一个理想的UI框架能够通杀它们所有呢?答案是--Flutter. Flutter的性能优势 做为一个通用的跨平台的UI框架,Flutter在性能方面的突出表现…
背景:朋友在为"关山口男子职业技术学校"写一款校园应用,于是找MoonXue写一个学生选课系统的登录接口.为了搞定这个接口,不得不先搞定这个系统的验证码. 验证码大概是这个样子 看上去不怎么难,没有干扰线没有粘连没有扭曲.但还是没能用pytesser直接将它识别出来,因为当中有噪点和其他背景噪声的存在.MoonXue的工作就是去掉这些讨厌的东西 先介绍一下,我们的工具: 1.Pytesser 它是基于一个c语言实现名为tesser的识别工具的python封装.可惜比较笨,只能做最简单的…
网上有代码动态生成cxgrid多行表头的源码,地址为:http://mycreature.blog.163.com/blog/static/556317200772524226400/ 如果要手动设计多行表头的话,有下面三步搞定: 1.新建一个工程.将CXGRID控件放在上面,Customize创建一个banded table 或者DB BANDED table.操作方法一样. 2.增加BANDS 和columns.加两个BANDS和5个columns.这里看下图红框内的内容为默认这个colum…
树是一种比较重要的数据结构,尤其是二叉树.二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒.二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等.本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助. 二叉树节点定义如下: public class TreeNode { int val; TreeNod…
最近总结了一下数据结构和算法的题目,这是第二篇文章,关于链表的,第一篇文章关于二叉树的参见 废话少说,上链表的数据结构 class ListNode { ListNode next; int val; ListNode(int x){ val = x; next = null; } } 1.翻转链表 ListNode reverse(ListNode node){ ListNode prev = null; while(node!=null){ ListNode tmp = node.next;…
最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的. 先上二叉树的数据结构: class TreeNode{ int val; //左孩子 TreeNode left; //右孩子 TreeNode right; } 二叉树的题目普遍可以用递归和迭代的方式来解 1.求二叉树的最大深度 int maxDeath(TreeNode node){ if(node==null){ return 0; } int left = maxDeath(node.left); int right…
接着前几天的两篇文章,继续解析JVM面试问题,送给年后想要跳槽的小伙伴 万万没想到,面试中,连 ClassLoader类加载器 也能问出这么多问题..... 万万没想到,JVM内存区域的面试题也可以问的这么难? 三.GC垃圾回收 1.GC是什么?为什么要GC GC:垃圾收集,GC能帮助我们释放jvm内存,可以一定程度避免OOM问题,但是也无法完全避免.Java的GC是自动工作的,不像C++需要主动调用. 当new对象的时候,GC就开始监控这个对象的地址大小和使用情况了,通过可达性分析算法寻找不可…
大家好,我是程序员啊粥. 今天给大家分享一个我遇到过的比较少见的面试题,那就是 MySQL 中如何计算一个索引的长度. 说实话,我第一次遇到这个问题的时候想当然的以为索引长度就是我们建表时定义的字段长度,如果是联合索引,那就是多个字段长度相加. 事实证明,在我说出上述回答之后,面试官就让我带着简历跑路了. 于是乎,我仔细查阅了相关资料,发现索引长度这个计算方式还是有点意思的,索性给大家分享一下. 首先,我们要知道 MySQL Innodb 引擎对于索引的长度是有限制的,最大为 767 字节. 你…
大家好,我是程序员啊粥,前边给大家分享了 *MySQL InnoDB 索引模型 在 MySQL InnoDB 中,为什么 delete 删除数据之后表数据文件大小没有变 如何计算一个索引的长度 如何查看 SQL 的执行计划 以上几篇都是偏理论知识,从今天开始,我们开始 MySQL 索引实战内容,具体介绍一下 MySQL 索引的用法. 首先介绍一下索引的相关语法: 索引语法 -- 创建索引 CREATE INDEX indexName ON table_name (column_name); AL…
原文地址 http://blog.csdn.net/silangquan/article/details/18655795?utm_source=tuicool&utm_medium=referral 连续两次面试都问到了红黑树,关键两次都没有答好,这次就完整地来学习整理一下. 没有学习过红黑树的同学请参考: <<Introduction to Algorithms>> Chapter 13 Red-Black Trees Chapter 14 Augmenting Dat…
大家好,我是程序员啊粥. 相信在大家的工作中,有很多的功能都需要用到 count(*) 来统计表中的数据行数.同时,对于一些大数据的表,用 count 都是瑟瑟发抖,往往会结合缓存等进行处理. 那么,我们今天就来分析一下,在 InnoDB 中,关于 count 的一些处理措施和优化. 常见的 count 使用方式有三种 count(*) count(主键 Id)/count(某个字段) count(1) 首先 count(*).count(主键 Id)/count(某个字段) 和 count(1…
提要 今天要整理的知识点是C++中有关虚的一切. 包括:虚函数,纯虚函数,虚基类,虚继承... 1.什么是虚函数,有什么作用? 在基类用virtual声明成员函数为虚函数.这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用.在类外定义虚函数时,不必再加virtual.该函数就是虚函数了.虚函数是多态性的基础,其调用的方式是动态联编(程序运行时才决定调用基类的还是子类).虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函…
序言 这些资料,你一定会用到!我相信很多人都在说,iOS行业不好了,iOS现在行情越来越难了,失业的人比找工作的人还要多.失业即相当于转行,跳槽即相当于降低自己的身价.那么做iOS开发的你,你是否在时刻准备着跳槽或者转行. 在分享这篇面试文章的小编先分享自己建的一个"iOS程序员开发者的群""638302184"每天都会有开发者分享案例一起探讨工作中的问题,群里还会分享阿里面试题及各大BAT面试题,你不会的有人解答.我不会的请伸手帮助一下. 先提供一些面试公司核心岗…
安装 使用docker安装,注意要安装tag后缀为management的镜像(包含web管理插件),我这里使用的是rabbitmq:3.8-management 1. 拉取镜像 shell docker pull rabbitmq:3.8-management ¨G0G shell docker run --name rabbitmq --hostname rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:3.8-management 3. 访问w…
一.MySQL的复制原理以及流程 (1)复制基本原理流程 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中: 3. 从:sql执行线程——执行relay log中的语句:   (2)MySQL复制的线程有几个及之间的关联 MySQL 的复制是基于如下 3 个线程的交互( 多线程复制里面应该是 4 类线程):…
前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedThreadPool = Executors.newFixedThreadPool(1); //此处不该利用Executors工具类来初始化线程池 但是,在<阿里巴巴Java开发手册>中有一条 [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方…
本篇文章我们主要探讨 一下如果try {}语句中有return,这种情况下finally语句还会执行吗?其实JVM规范是对这种情况有特殊规定的,那我就先上代码吧! public class FinallyTest { public int method() { int x = 1; try{ ++ x; return x; }catch(Exception e){ }finally{ ++ x; } return x; } public static void main(String[] arg…
大家在项目测试过程中,是不是经常会碰到这个空指针异常呢Caused by: java.lang.NullPointerException: null 当大家遇到这个问题,大家是怎么处理?自己解决还是让开发来解决 以下是小编自己遇到的实际案例: 查询组织详情的时候,出现系统异常 既然出现了问题,那么就查看日志呗(学会查看日志,是定位问题的最基本的能力) 查看代码的247行,是操作啥: 第247行的代码是查询orgAuth.getUserMaxLimit()方法获取getUserMaxLimit 获…
作为程序员,Bug 修复终究是绕不开的话题,本期移动开发精英俱乐部讨论的主题便是 Bug 修复中的 Hotfix,即热修复.接下来让我们跟随大牛的脚步来了解 Hotfix,就算你不能一下豁然开朗,相信也一定会有所启发.非常感谢赖春辉的整理,本文系国内 ITOM 管理平台 OneAPM 审校. 什么是热修复? 主持人-牛树民:我们自己的项目中还没有这方面的技术方案,最近一直在考虑这个.大家对热修复这个名词是怎么理解的?什么是热修复? 七里小晴天:是不是跟游戏打补丁差不多? longway:运行时,…
项目首页:https://github.com/ossrs/srs-sea SRS服务器项目:https://github.com/ossrs/srs 一个支持RTMP推流的版本:https://github.com/begeekmyfriend/yasea 在Android高版本中,特别是4.1引入了MediaCodec可以对摄像头的图像进行硬件编码,实现直播. 一般Android推流到服务器,使用ffmpeg居多,也就是软编码,实际上使用Android的硬件编码会有更好的体验. 看了下网上的…
Cordova:8.0.0 Android studio:3.2.1 cordova-plugin-adam-wechat : 3.0.6 你看到这个标题肯定会惊讶,一个Cordova的微信支付插件,有这么夸张吗? 一,不要使用的微信支付插件:https://github.com/xu-li/cordova-plugin-wechat 上面的插件,是目前大家在网上搜索文章时候,推荐最多的插件,但是,插件开发者,已经不再维护这个插件了,从最新版插件的代码看,确实是那样,其中从2.0.0开始的bug…
就一句话,Frame是父View上看到子View的窗户,Bound是子View上可以被父View看见的内容. 稍微解释下.Frame 指子View在父View中的位置以及大小.由两部分构成,第一部分是Origin,规定了子View在父类的位置.第二部分是Size,指View在父类中的可视范围(这里能说是View的大小).这感觉像是在父View中在Frame.Origin位置打开一个窗户,窗户的大小是Frame.Size,从窗户中可以看到子View的内容. Bound 指子View自身显示那些内容…
python的装饰器是python的特色高级功能之一,言简意赅得说,其作用是在不改变其原有函数和类的定义的基础上,给他们增添新的功能. 装饰器存在的意义是什么呢?我们知道,在python中函数可以调用,类可以继承,为何要必须保证不改变函数和类的定义,就使得函数有了新的功能呢?其实很好解释. 提高代码的简洁程度与封装性.如果你采用新声明一个函数,并调用原来函数的思路使得原函数功能增加了,但是一方面使用起来看着不简洁, 另一方面当另一个程序员使用你的代码时再使用这样的思路,那代码嵌套无穷无尽,会让代…