冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubbleSort($arr) { $count = count($arr); if ($count == 0) return false; for ($i = 0; $i < $count - 1; $i++) { for ($k = 0; $k < $count - 1 - $i; $k++) {…
目录 python相对其他语言有什么特点? python内存管理机制,gc机制的了解,gc回收三种算法. lambda函数 高级函数 map.reduce.filter.sorted等. 简述六种基本数据类型(number.string.list.tuple.dict.set). python中深拷贝与浅拷贝. python中is和==的区别. python中if __ name ==' main __'有什么含义? python命令和python -m命令在执行脚本时的区别? python中多…
前言 dubbo是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力.作为spring cloud alibaba体系中重要的一部分,随着spring cloud alibaba在国内活跃起来,dubbo也越来越深受各大公司的青睐.本文就来对dubbo的spi机制源码进行剖析,看一看dubbo的spi到底有哪些特性和功能. 一.什么是spi机制? SPI (Service Provider Interface),主要用于扩展的作用.举个例子来说,假如有一个框架有一个接口,他有…
本人是做java开发的,这是我参加58,搜狐,搜狗,新浪微博,百度,腾讯文学,网易以及其他一些小的创业型公司的面试常被问的问题,当然有重复,弄清楚这些,相信面试会轻松许多. 1. junit用法,before,beforeClass,after, afterClass的执行顺序2. 分布式锁3. nginx的请求转发算法,如何配置根据权重转发4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)5. 线程的状态5. 线程的阻塞的方式6. sleep…
广义的 IOC IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”. 两种实现: 依赖查找(DL)和依赖注入(DI). IOC 和 DI .DL 的关系(这个 DL,Avalon 和 EJB 就是使用的这种方式实现的 IoC): DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组装对象.即有侵入性. DI 是 Spring 使用的方式,容器负责组件的装配. 注意:Java 使用 DI 方式实现 IoC 的不止 Spring,包括…
并发.JVM.分布式.TCP/IP协议 1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的.以下简单模拟一个数据结构的连环炮. 比如,面试官先问你HashMap是不是有序的? 你肯定回答说,不是有序的.那面试官就会继续问你,有没有有顺序的Map实现类? 你如果这个时候说不知道的话,那这个问题就到此结束了.如果你说有TreeMap和LinkedHashMap. 那么面试官接下来就可能会问你,TreeMap和LinkedHas…
一.算法,数据结构 1.排序算法 2.查找算法 3.二叉树 4.广度,深度算法: 二.java基础 1.集合Collection,List,Map等常用方法,特点,关系: 2.线程的同步,中断方式有几种,线程池,线程状态,常用的方法比较,比如wait,sleep等: 3.反射机制 4.IO包的使用,运用了什么设计模式 5.设计模式,常用的设计模式,运用场景: 6.内存管理,引用的种类: 7.json,xml解析,dom和sax的特点: 8.socket 9,值传递和引用: 三.andrid基础…
排序算法: class Sort { static void swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = tmp; } #region 冒泡排序 public static void Bubble(ref int[] arr) { ; i < arr.Length - ; i++) ; j < arr.Length; j++) if (arr[i] > arr[j]) swap(ref arr[i], ref arr[j…
线程与进程 进程是可并发运行的程序在某个数据集合上的一次计算活动.也是操作系统进行资源分配和调度的基本单位. 线程是操作系统进程中能够并发运行的实体,是处理器调度和分派的基本单位. 每一个进程内可包括多个可并发运行的线程. 线程自己基本不拥有系统资源.仅仅拥有少量不可缺少的资源:程序计数器.一组寄存器.栈. 同属一个进程的线程共享进程所拥有的主存空间和资源. 在传统OS中,拥有资源.独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位.而进程是拥有资源的基本单位. 在…
概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的一段代码: class A(object): def show(self): print 'base show' class B(A): def show(self): print 'derived show' obj = B() obj.show() 如何调用类A的show方法了. 方法如下: o…
开放封闭原则(OCP原则The Open-Closed Principle)是面向对象的核心设计所在.它是说,软件开发实体(类.模块.函数等)应该可以扩展,但是不能修改. 这个原则有两个特征,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”. 我们在编写任何app时,不要寄希望于需求是固定的.不变化的,这是不现实也是不科学的想法,既然需求一定会有变化,那么如何应对这种变化?也就是说.我们所设计的代码可以相对容易的修改,不至于新的需求一来,就将整个程序推倒重写?怎么样的设计才能面对需求…
背景 今天在查看Sonar的时候发现小伙伴在某些场景下如下使用 很明显sonar已经报错了,但是线上应用目前是正常的 问题 事实上经常会有面试的小伙伴或者笔试的小伙伴问这个问题 Integer的一些小知识 Integer i2 = Integer.valueOf(1); Integer i3 = Integer.valueOf(1); Assert.assertTrue(i2 == i3); 按照大家的理解 valueOf会返回一个Integer 当用Integer和Integer进行比较 这是…
1.看看简历,会问一些过去做的项目的用户量.pv.吞吐量.相关难点和解决方法等2.数据库设计经验,为什么进行分表? 分库?一般多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等?可以举例说明3.数据库优化有哪些? 分别需要注意什么?4.web开发方面会遇到哪些缓存? 分别如何优化?5.给你256M的内存,对10G的文件进行排序(文件每行1个数字),如何实现?  对10G的文件进行查找如何实现?  统计10G文件每个关键字出现的次数如何实现?6.假如你现在…
面试时技术经理会问你一些工作中遇到的Android方面的问题.谈谈你所做的项目,和在项目中所扮演的角色. 很多其它内容请參考我的博客:点击打开链接 1.怎样优化ListView? ①Item布局,层级越少越好,使用hierarchyview工具查看优化. ②复用convertView点击打开链接 ③使用ViewHolder ④item中有图片时.异步载入 ⑤高速滑动时,不载入图片 ⑥item中有图片时.应对图片进行适当压缩 ⑦实现数据的分页载入 2.对于Android 的安全问题? ①错误导出组…
一:java基础1.简述string对象,StringBuffer.StringBuilder区分string是final的,内部用一个final类型的char数组存储数据,它的拼接效率比较低,实际上是通过建立一个StringBuffer,让后台调用append(),最后再将StringBuffer toSting(),每次操作Sting 都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.StringBuffer也是final,线程安全的,中采用一个c…
很多人想找Python工作,面试往往在基础知识点采坑了 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习.ps:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,都会解决哦! 1.类…
作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服务器上都是Linux系统.所以,要和服务器机器交互,就要通过shell命令. 本文并不会对所有命令进行详细讲解,只给出常见用法和解释.具体用法可以使用--help查看帮助或者直接通过google搜索学习. 1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. find .…
一.虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的. 同一个java代码在windows上生成的机器码可能是0101.......,在linux上生成的可能是1100......,那么这是怎么实现的呢? 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现. 那么虚拟机又是什么东西呢,如图是从软件层面屏蔽不同操作系统…
本文浅显的分析了MySQL索引的原理及针对主程面试的一些问题,对各种资料进行了分析总结,分享给大家,希望祝大家早上走上属于自己的"成金之路". 学习知识最好的方式是带着问题去研究所获取的资料,分析所获取资料的优点和不足,然后归纳汇总资料,结合使用场景形成整体的知识脉络体系,本文行文依据各类问题展开,并附上具体的资料,引导大家走上属于自己的"成金之路". 目录:1.索引有哪几种?各种索引优缺点?2.索引的结构及为什么使用这种结构?3.INNODB表索引常见面试问题--…
字符串都是海针 数组是针海 输出及打印 echo 8%(-2); //输出结果为0 模后的正负号可无视 模前的有用 echo date('Y-m-d H:i:s',strtotime('-1 day')); //用php打印出前一天的时间格式 echo echo '你好'; //结构语句 无返回值 print print '你好'; //结构语名 简单数据 有返回值 1 print_r print_r([ 'name' => '帅哥', 'age' => 18, ]) ; //结构语名 复杂数…
冒泡排序就是对一个数组进行排序. 用双层for循环就可以解决. 第一层,决定排序的次数. n个数,进行n-1次排序就行了. 第二层,把相邻的两个数比较,谁小,放到后面和下一个数字比较,谁小谁放到后面,这样,一轮循环下来,最小的一个就到最后了. 然后,第二次循环把第二小的数放到了倒数第二个. n-1次循环下来,就排好序了. package paixu; public class maopao { public static void main(String[] args) { int shuzu[…
少壮不努力,老大徒伤悲 工作大半辈子了,来到个陌生的过度,从零开始,像个应届毕业生一样投入茫茫人才市场,碰的满头包. 凡是涉及到sql server的都会问,join的问题,不烦记录下: SQL的join有五种方式: 1.INNER JOIN or JOIN 2.OUTER JOIN 2.1 LEFT OUTER JOIN or LEFT JOIN 2.2 RIGHT OUTER JOIN or RIGHT JOIN 2.3 FULL OUTER JOIN or FULL JOIN 3.NATU…
https://www.cnblogs.com/javazhiyin/p/9842571.html 近,阿音在为接下来的一场面试做准备,其中的内容包括redis,而且redis是重点内容. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它支持存储的类型包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型). 相关知识:redis…
写在前面 本文描述的有关于 JVM 的运行时数据区是基于 HotSpot 虚拟机. 概述 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机的进程启动而存在,有的区域则依赖于用户线程的启动和结束而建立和销毁. HotSpot 运行时数据区 运行时数据区在 HotSpot 1.8 之前的版本和 1.8 版本有所不同,主要是 方法区移到元空间 了. 图 1-1:JDK1.8 之前 JVM 运行时数据区…
前言 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少遇到了以下的设计模式的使用: 1.Builder模式 例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBuilder: 2.工厂模式 例如SqlSessionFactor…
RDD算子调优 不废话,直接进入正题! 1. RDD复用 在对RDD进行算子时,要避免相同的算子和计算逻辑之下对RDD进行重复的计算,如下图所示: 对上图中的RDD计算架构进行修改,得到如下图所示的优化结果: 2. 尽早filter 获取到初始RDD后,应该考虑尽早地过滤掉不需要的数据,进而减少对内存的占用,从而提升Spark作业的运行效率. 本文首发于公众号:五分钟学大数据,欢迎围观 3. 读取大量小文件-用wholeTextFiles 当我们将一个文本文件读取为 RDD 时,输入的每一行都会…
前提准备,在HTML页面中定义一个div,div中内容自定义. <div class="box sc">致我们呼啸而过的青春</div> 样式: div.box{ width: 300px; height: 200px; background-color: peachpuff; } 此处的sc用于居中的样式设计. 第一种:弹性布局 此效果实现div中的内容水平垂直居中,如果不给div设定宽高,则div的宽由内容所占宽度决定,高度则继承父元素的高度. (如果要求d…
这篇文章会从下面几个维度来对比 HTTP 1.0 和 HTTP 1.1: 响应状态码 缓存处理 连接方式 Host头处理 带宽优化 响应状态码 HTTP/1.0仅定义了16种状态码.HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种.比如说,100 (Continue)--在请求大资源前的预热请求,206 (Partial Content)--范围请求的标识码,409 (Conflict)--请求与当前资源的规定冲突,410 (Gone)--资源已被永久转移,而且没有任何已…
关键字: final finalize finally throws和throw static关键字的作用 abstract 和 interface super 和 this synchronize 和 volatile 1. final finalize finally对比 (1)性质不同 final为关键字: finalize()为方法: finally为为区块标志,用于try语句中: (2)作用不同 final:用于标识常量的关键字,final标识的关键字存储在常量池中(在这里final常…
知识综述: [1] MySQL中锁的种类: 常见的表锁和行锁,也有Metadata Lock等等,表锁是对一整张表加锁,分为读锁和写锁,因为是锁住整张表,所以会导致并发能力下降,一般是做ddl处理时使用. 行锁则是锁住数据行,这种加锁方法比较复杂,但是由于只锁住有限的数据,对于其它数据不加限制,所以并发能力强,MySQL一般都是用行锁来处理并发事务 [2] MySQL四种隔离机制 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据. 提交读(R…