笔试面试
呼延十
呼延
展开
-
Redis系列(一)底层数据结构之简单动态字
前言定义优劣高性能获取字符串长度杜绝缓冲区溢出减少修改字符串产生的内存分配次数,提高修改字符串性能二进制安全兼容部分 C 语言的库函数总结SDS 限制为512M问题参考文章联系我前言Redis 已经是大家耳熟能详的东西了,日常工作也都在使用,面试中也是高频的会涉及到,那么我们对它究竟了解有多深刻呢?我读了几本 Redis 相关的书籍,尝试去了解它的具体实现,将...原创 2020-01-07 11:06:45 · 219 阅读 · 0 评论 -
二分法查找及有重复值的二分法
前言最近也在进行一些面试嘛,也见识到了很多各种各样的题目,其中就有一些和二分查找相关的.二分查找,在有序的数组中快速找到目标值.这个算法在上学的时候学过,之后就没有看过了,因为比较"简单"嘛~.然而在面试过程中,我在二分查找及类似题目上栽了三次…所以今天做一个总结.注意:下文的代码中没有进行参数校验,实际使用时需要进行参数校验普通写一个二分查找class Solution: ...原创 2019-03-18 00:15:36 · 7350 阅读 · 4 评论 -
[设计模式]-模板方法模式
前言在上一篇文章责任链模式中提到了模板方法模式,因此这里简单介绍一下.模板方法模式比较简单,或者说比较常用.在开发过程中,许多人在不知不觉的情况下就会使用,只要他具有良好的面对对象思维.比如当你写了Dog和Cat两个类,发现很多相同的代码,你自然就会将相同模块提取抽象成父类,然后将一些公共的方法放到父类中,这样子就基本实现了模板方式模式.介绍(摘自《Head FIrst 设计模式》)在一...原创 2019-03-20 00:33:47 · 138 阅读 · 0 评论 -
[设计模式]-责任链模式
1.介绍使多个对象都有机会处理请求,从而避免请求的发送者与接受者之间的耦合关系. 将多个接受者连成一条链,沿着该链处理请求,知道请求被处理为止.类图角色抽象处理者: 定义了处理请求的接口或者抽象类,提供了处理请求的的方法和设置下一个处理者的方法。具体处理者: 实现或者继承抽象这角色,具体的实现处理逻辑.实例与代码责任链模式有纯的和不纯的.纯的:当前接收者要么处理,要么传递给下一个...原创 2019-03-19 20:57:02 · 183 阅读 · 0 评论 -
OOM,StackOverFlow以及死锁的测试
这篇文章主要是记录自己做的一些小的测试.主要包括内存溢出,栈溢出,以及死锁问题.PS:文章中使用了Arthas工具,用来动态监控JVM的一些资源,非常好用,强烈安利一下.OOMOutOfMemory ,内存不够用了,一般是什么原因呢?给应用程序分配的内存太小,只能通过增大内存来解决.内存泄漏.有一部分内存"无用"了,但是因为编码问题导致的没有被垃圾回收掉,产生了泄漏,最终导致了内...原创 2019-03-07 00:12:17 · 601 阅读 · 0 评论 -
[随缘一题]后缀表达式(逆波兰表达式)转换
来源:维基百科-后缀表达式目标将中缀表达式转换为后缀表达式,比如((5+2) * (8-3))/4 转换为5 2 + 8 3 - * 4 /.解题思路将表达式的字符逐一处理,如果是数字(变量)则直接输出,如果是字符入栈,并按以下规则进行处理.+/-: 低优先级,所以将栈中的所有运算符出栈,之后将自己入栈.*or/:高优先级,将栈中的其他乘除运算符出栈,之后将自己入栈.(: 左括号则...原创 2019-02-24 16:50:20 · 306 阅读 · 0 评论 -
[随缘一题]回溯法解决N皇后问题
来源:维基百科-N皇后问题解题思路采用回溯法,即逐一位置放置,然后放置下一行,如果下一行没有合法位置,则回溯到上一行,调整位置,直到得到所有值.实现代码/** * solve the N-Queen problem */public class NQueen { //the number of chess board,example 8 private static fi...原创 2019-02-24 16:46:22 · 209 阅读 · 0 评论 -
Java的序列化与反序列化
前言Java的序列化与反序列化是Java中比较重要的一个知识,本文将总结一下,怎么使用序列化功能以及经常遇到的一些问题的解答.什么是Java的序列化JDK提供给我们的,可以将某一个对象转化为二进制字节流保存,并从字节流恢复对象的一种技术.我们可以再网络传输对象,或者持久化对象时使用这项技术.怎么进行序列化与反序列化Java中通过继承Serializable接口来获得序列化与反序列化的能...原创 2019-01-29 21:16:30 · 239 阅读 · 0 评论 -
Java类加载的执行顺序
前言那一年,呼延十又回想起被加载顺序支配的恐惧,笔试题上,好几个类,几个方法,几个输出语句,让你按照顺序写出输出.我真的是有一句…但是呢,我们还是有了解一下的必要的,在编码过程中有许多的应用.正文经常用来比较顺序的,无非就是静态代码块,普通代码块,静态方法和普通方法.这里直接说一下结论:先静态后普通最后构造方法,先父类后子类.看一下实际的例子:package daily;/**...原创 2019-01-29 00:34:39 · 241 阅读 · 0 评论 -
TOP-K问题
前言TOP-K问题是面试中的常见题型,具体表现为:海量数据求最大(最小)的K个值.比如:给定1亿个乱序的整数,求其中最大的1000个今天一步一步来分析这种题目的解决办法,以及用到的算法思想.依赖此文中会依赖到快速排序,堆排序等排序算法,以及数据结构堆.如果你对上述两者的原理有所了解,可以继续往下看.如果不了解,可以点击链接先看一下基础~.好,进入正题.(以给定1亿个乱序的整数...原创 2019-01-16 23:25:49 · 3467 阅读 · 1 评论 -
单例模式的N种写法
1.前言写完这个题目,我感觉自己好像"孔乙己"啊,回字的四种写法要不要学啊~我们经常会用到单例模式,但是我对他一直没有一个统一的的认识,比如我清楚好多种单例的写法,但是每一种是怎么演化来的?具体解决了什么问题?这块就没有那么清晰了,因此此文对单例模式进行一个总结,同时手撸一下代码加深理解.2.介绍单例模式,即某一个类在整个系统中有且仅有一个实例.经常用来读取配置,获取连接等等.3.实现...原创 2019-01-31 14:22:30 · 225 阅读 · 0 评论 -
面试常用排序算法总结
layout: postcategory: [算法,排序,面试]tags:算法面试排序前言面试的死亡高发区是什么?手写快排.其他的排序算法也经常会问到,虽然在工作中,我们很少有需要自己手写排序算法的机会,但是这种入门级的算法却是证明我们能力的一种简单方法.因此要熟悉掌握.这篇文章,详细记录常用的一些排序算法,留以备忘.本文所有代码可在github上下载查看.传送门为了...原创 2019-01-14 15:49:06 · 430 阅读 · 0 评论