
面试
花花脸的猫
北京邮电大学 硕士毕业程序媛一枚!
展开
-
堆排序(java实现)
堆排序算法的步骤:首先将给定的无序数组排成一个大顶堆交换大顶堆的首尾元素,然后删除尾部元素,将剩余元素再构建大顶堆,循环直到到达根节点。若array[0,…,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下:任意一节点指针 i:父节点:i==0 ? null : (i-1)/2左孩子:2*i + 1右孩子:2*i + 2代码: public ...原创 2019-03-15 22:41:10 · 116 阅读 · 0 评论 -
排序总结
快排public static void main(String[] args) { int[] arr = {3,10,7,0,6,8,9,8}; int len =arr.length-1; QuickSort(arr, 0, len); for(int i=0;i<=len;i++) { System.out.print(arr[i]); } } ...原创 2019-07-23 10:53:13 · 132 阅读 · 0 评论 -
mysql数据库复习
join1 笛卡尔积就是将连个表强行拼接在一起,比如a有n条记录,b表有m条记录,笛卡尔积后n*m条记录2 左连接,右连接,内连接首先内连接是两个表满足匹配条件的字段的连接外连接分为左外连接和右外连接,左外连接是左表全部和满足条件的右表字段的连接,右外连接是满足条件的左表字段和全部右表记录的拼接,下图给出了很好的解释自然连接:是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相...转载 2019-07-23 10:53:49 · 271 阅读 · 0 评论 -
垃圾回收
垃圾回收中的引用分类:强引用:Object object = new Object();String str = "hello";这里的代码就是强引用,强引用的对象在垃圾回收的时候一定不会回收这个对象,除非是显式的将这个的对象向设置为null,这样才会在内存不足的时候进行回收。软引用:软引用是一些有用但不必须的对象,在内存不足的时候进行回收,适合用作缓存。软引用 可以和引用队列联...转载 2019-07-23 10:54:10 · 115 阅读 · 0 评论 -
HashMap,Hashtabel,ConcurrentHashMap的区别
这三者的关系面试最常被问到的,在这里说下自己的理解。首先HashMap是线程不安全的,在处理高并发的情况下不适用,Hatabel和Concurrent作为线程安全的集合类,就派上用场了。那这两者是怎么实现线程安全,以及两者的区别在哪呢?首先我么来看一下Hashtabel的源码:public synchronized V put(K key, V value) {// Make sure t...转载 2019-07-17 22:00:51 · 636 阅读 · 0 评论 -
面试中爱问的大数量的问题总结
1 按照query的频率排序有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。解决方案:如何从大量的url中找到相同的url?题目描述:给定a、b两个文件,各存放50亿个url,每个url各占64B,内存限制是4GB,请找出a、b两个文件共同的url。分析:50亿个url,50亿64 = 5GB6...转载 2019-07-16 20:54:35 · 330 阅读 · 0 评论 -
redis学习总结
redis 的过期策略:定期删除+惰性删除定期删除指每过100ms随机抽取设置了过期时间的key来判断是否过期,过期删除惰性删除指在获取某个key的时候判断key是否过期,过期删除,不返回任何数据淘汰机制:一般采用LRU算法,把最近不长使用的key删除redis的线程模型redis的内部使用文件事件处理器,它是单线程的,因此redis也称单线程模型它采用IO多路复用来同时监听多个so...转载 2019-07-16 16:50:15 · 118 阅读 · 0 评论 -
mysql基础知识复习
mysql在面试中被问到的还是很多的,一些基本的操作有些混淆,今天来做个复习。单表查询1 update语句:update tablea_name set field1=value where condition2 避免重复数据查询-distinct语句:select distinct field1 field2...from table_name...原创 2019-04-13 22:16:56 · 133 阅读 · 0 评论 -
中软笔试题总结
最近面试了中软的java开发岗,是一家外包公司,果断放弃,但是笔试题还是有一些不太清楚,做一个总结。1 接口和抽象类的区别有一种很通俗的解释,接口是对动作的抽象,抽象类是对根源的抽象。比如男人,女人,这两个类,他们的抽象类是人。人可以吃东西,狗也可以吃东西,可以把吃东西定义为接口,定义eat方法,不同的类对象去调用它,并重写它的eat方法。也就是说,一个类只能继承一个抽象类,但可以实现多个接口...原创 2019-04-13 16:49:56 · 2106 阅读 · 0 评论 -
用字符串模拟两个大数的相加
问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求。可以使用字符串来表示大数,模拟大数相加的过程。思路: 1.反转两个字符串,便于从低位到高位相加和最高位的进位导致和的位数增加; 2.对齐两个字符串,即短字符串的高位用‘0’补齐,便于后面的相加; 3.把两个正整数相加,一位一位的加并...原创 2019-04-03 17:31:04 · 500 阅读 · 0 评论 -
阿里面试背包问题
一个旅行者有一个最多能装m公斤的背包,现在有n中物品,每件的重量分别是W1、W2、……、Wn,每件物品的价值分别为C1、C2、……、Cn, 需要将物品放入背包中,要怎么样放才能保证背包中物品的总价值最大?思路:假设前n个物品,总承重为j,物品的重量为w,其最大价值为v[n,j]。 在背包的总承重不变的前提下,一个物品是否放入背包中直接影响到后面的物品是否能放入到背包中,即一个物品...转载 2019-04-04 17:08:48 · 409 阅读 · 0 评论 -
java实现队列
牛客网网上有这个题,直接上代码import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); ...原创 2019-04-04 10:26:40 · 127 阅读 · 0 评论 -
java实现栈的方法
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定...转载 2019-04-04 10:10:02 · 426 阅读 · 0 评论 -
归并排序(java实现)
思路分而治之(divide - conquer);每个递归过程涉及三个步骤第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素.第二, 治理: 对每个子序列分别调用归并排序merSort, 进行递归操作第三, 合并: 合并两个排好序的子序列,生成排序结果merge.代码public static void main(String[] args)...原创 2019-03-16 18:03:30 · 132 阅读 · 0 评论