计算机专业面试
文章平均质量分 62
专注于计算机专业面试遇到的问题~
fesng
CSDN年度博客之星和博客专家,毕业长期在一线互联网专注于Android开发以及Android漏洞挖掘研究。
展开
-
大厂面试题-0到9999这1万个数中有多少个数字7
(请不要理解为多少个数包含7)题目0 到 9999 这 1 万个数中有多少个数字 7 ?(请不要理解为多少个数包含 7)思路&答案总共有四位数,每位数的可能分别有10种(0~9)。 每一个位,都会出现0-9的交替,实际上在出现7这个角度,各个位是一样的。现在假设个位固定为7,那么其他的位数的变化数量是10 * 10 * 10 = 1000种。 就是说数字7在个位出现的次数为1000。以此类推,数原创 2017-02-27 22:29:07 · 9219 阅读 · 10 评论 -
ubuntu日志文件管理
众所周知,ubuntu的日志文件会越来越大,需要定期管理logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。另外,旧日志也可以通过电子邮件发送,不过该选项超出了本教程的讨原创 2016-12-01 09:43:21 · 4040 阅读 · 3 评论 -
ubuntu垃圾清理命令
ubuntu的空间莫名不够用了通过系统自带的工具磁盘使用分析器,发现var文件下面的log100多个g,这个日志文件是可以删除的,然后tmp文件也是可以删除的。1.sudo rm -rf /tmp/*2.sudo rm -rf /var/log/*大功告成!!!我的微信二维码如下,欢迎交流讨论欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧微信订阅号二维码如下:原创 2016-11-30 21:39:17 · 2589 阅读 · 2 评论 -
Android新建工程步骤(AndroidStudio)
1.在 Android Studio 中,创建新项目:如果您未打开项目,请在 Welcome to Android Studio 窗口中,点击 Start a new Android Studio project。 如果您已打开项目,请选择 File > New Project。2.在 New Project 屏幕中,输入以下值:Application Name:“My First App” C原创 2016-11-14 14:05:26 · 2827 阅读 · 2 评论 -
ubuntu安装qq
安装的版本是国际版1.安装依赖库sudo apt-get install libgtk2.0-0:i386sudo apt-get install lib32ncurses52.下载下载链接: http://pan.baidu.com/s/1jIwKdXshttp://linux.linuxidc.com/3.解压并安装wineqqintl定位到该路径,然后再输入 sudo dpkg -i wi原创 2016-11-13 14:20:00 · 1440 阅读 · 2 评论 -
linux添加环境变量(path)
分为三步1.sudo vim /etc/profile2.export PATH=”全路径:$PATH”3.source /etc/profile我的微信二维码如下,欢迎交流讨论欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧微信订阅号二维码如下:原创 2016-11-10 22:03:17 · 1653 阅读 · 1 评论 -
Android的log日志知识点剖析
log类的继承结构Logpublic final class Log extends Object java.lang.Object ↳ android.util.Loglog日志的常用方法分为6个级别 ,低级别包括高级别V 详细(表示所有可能的日志,默认级别) D 调试(表示所有合理的调试用日志) I 信息(表示正常使用时的日志) W 警告(表示原创 2016-11-10 19:51:02 · 1910 阅读 · 2 评论 -
Hexo写博客
hexo配置githubGitInstall hexo-deployer-git.$ npm install hexo-deployer-git –save配置_config.yml文件deploy: type: git repo: repository url branch: [branch] message: [message]选项描述repo GitHub/Bit原创 2016-11-10 11:25:02 · 2104 阅读 · 3 评论 -
搭建属于自己的技术博客
每个程序员都需要自己的博客本文的博客搭建采用了静态博客技术 。技术框架是:github pages和hexohexo安装hexo介绍Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。安装hexo之前需要先安装git和node.js参考网站:https://hexo.io/zh-cn/docs/index.原创 2016-11-10 09:27:14 · 3071 阅读 · 3 评论 -
Java程序员必备知识-多线程框架Executor详解
为什么引入Executor线程池框架new Thread()的缺点每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 不利于扩展,比如如定时执行、定期执行、线程中断采用线程池的优点重用存在的线程,减少对象创建、消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源的使用率原创 2016-11-08 16:21:41 · 2695 阅读 · 1 评论 -
Java程序员必须掌握的线程知识-Callable和Future
Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执原创 2016-11-08 21:11:20 · 1505 阅读 · 0 评论 -
程序员必须搞清的概念-equals和=和hashcode的区别
1. 首先equals()和hashcode的介绍equals 方法在非空对象引用上实现相等关系: * 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 * 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。 * 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(原创 2016-09-22 23:56:13 · 2561 阅读 · 1 评论 -
海量数据处理算法(top K问题)
举例有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。思路首先把文件分开针对每个文件hash遍历,统计每个词语的频率使用堆进行遍历把堆归并起来具体的方案1.分治: 顺序读文件中,对于每个词c,取hash(c)%2000,然后按照该值存到2000个小文件中。这样每个文件大概是500k左右。注意:如果其中的有的文件超过了1M原创 2016-09-22 20:20:01 · 4352 阅读 · 3 评论 -
DFS(深度优先)算法编程实践
DFS定义DFS(Depth-First-Search)深度优先搜索算法,是搜索算法的一种。是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点 。特点每次深度优先搜索的结果必然是图的一个连通分量。深度优先搜索可以从多点发起。如果将每个节点在深度优先搜索过程中的“结束时间”排序(具体做法是创建一个list,然后在每个节点的相邻节点都已被访问的情况下,将该节点加入list结尾,然后逆原创 2016-09-19 10:31:04 · 4844 阅读 · 1 评论 -
Java Math的 floor,round和ceil
floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。ceil 则是不小于他的最小整数原创 2016-09-18 12:21:39 · 1068 阅读 · 0 评论 -
希尔排序详解
概述希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序是基于插入排序的以下两点性质而提出改进方法原创 2016-09-06 21:31:30 · 4061 阅读 · 2 评论 -
计算机10大基础知识点(一)
1.析构函数析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。以C++语言为例:析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数原创 2016-09-06 17:13:52 · 6183 阅读 · 2 评论 -
堆排序详解
概述堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。什么是堆?堆(...原创 2016-09-06 12:59:41 · 3442 阅读 · 4 评论 -
选择排序详解
概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。思想选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素原创 2016-09-06 12:38:24 · 1718 阅读 · 1 评论 -
插入排序详解
概述有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。基本思想插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适原创 2016-09-06 12:01:58 · 1526 阅读 · 3 评论 -
Dijkstra算法
算法描述迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。步骤a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则{u,v}正常有...原创 2016-09-02 13:55:07 · 2392 阅读 · 3 评论 -
Hash冲突解决
hash的冲突不可避免的1.开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1) 其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能为1,2,3,…m-1,称线性探测再散列。 如果di取1,则每次冲突之后,向后移动1个位置.如果di取值可能为1,-1,2,-2,4,-4,9,-9,16,-16,…k...原创 2016-09-02 11:24:42 · 1408 阅读 · 2 评论 -
查找算法总结
1、顺序查找 条件:无序或有序队列。 原理:按顺序比较每个元素,直到找到关键字为止。 时间复杂度:O(n) 代码:public static int SequenceSearch(int[] sz, int key) { for (int i = 0; i < sz.length; i++) { if (sz[i] == key) {原创 2016-09-02 11:11:53 · 1250 阅读 · 3 评论 -
String类用法总结
String类在编程中出现的频率是非常高的,熟练掌握是很有必要的一.常用方法总结:获取方法1.1:字符串中包含的字符数,也就是字符串的长度。 int length():获取长度1.2:根据位置获取位置上某个字符。 char charAt(int index)1.3:根据字符获取该字符在字符串中的位置。 int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。原创 2016-09-01 19:27:41 · 1626 阅读 · 5 评论 -
数据库索引的原理
介绍:索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索原创 2016-08-05 19:59:52 · 1837 阅读 · 0 评论 -
B-树,B+树,B*树详解
B-树B-树是一种多路搜索树(并不一定是二叉的)1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:1、根结点至少有两个子女;2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <=原创 2016-08-05 19:24:51 · 3514 阅读 · 0 评论 -
数据结构-自平衡二叉查找树(AVL)详解
介绍:在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 “An alg...原创 2016-08-05 16:29:41 · 3727 阅读 · 0 评论 -
Iterm2安装Zsh + Oh My Zsh+Solarized
安装Oh My Zshcurl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh安装Zsh:1.安装zshbrew install zsh2.配置iterm2sudo vim /etc/shells输入:/usr/local/bin/zshchsh -s /usr/local/bin/zs原创 2016-07-29 01:48:20 · 2800 阅读 · 0 评论 -
mac配置java环境
首先下载:网址如下:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html配置环境变量:1. 命令行输入cd ~vim .bash_profile2.编辑放入下面的内容export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.原创 2016-07-29 01:12:22 · 1069 阅读 · 0 评论 -
二叉树由前序遍历和中序遍历推导后序遍历
题目描述已知一个二叉树的前序遍历结果是(ACDEFHGB) ,中序遍历结果是(DECAHFBG),请问后续遍历结果是()。思路由前序遍历的第一个节点A是根节点,把中序遍历分为(DEC)A(HFBG),其中前半部分对用左子树,后半部分对应右子树再对应回去,得到A(CDE)(FHGB)就这样吧,递归遍历下去答案:EDCHBGFA...原创 2016-07-28 01:56:50 · 2912 阅读 · 0 评论 -
进程间通信方式总结
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间通原创 2016-07-28 01:15:57 · 1942 阅读 · 0 评论 -
java容易混淆的15个知识点
java知识点不多,但是有一些经常会被我们忽略1.java是强类型的语言,数组也是对象,一旦确定数组的类型,里面就只能存放一个类型的数据。2.新建的对象都被存放到堆上,如果没有引用,会很快垃圾回收。3.java没有全局变量和方法这个概念,全局方法,被加上static关键字,全局的变量是,static final4.java是值传递,对于primitive基本类型,是拷贝数值,对于复杂对象类型是拷贝引原创 2016-07-27 22:54:33 · 2708 阅读 · 0 评论 -
动态链接库的优缺点
介绍:DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL原创 2016-07-25 01:11:47 · 10924 阅读 · 0 评论 -
程序员的软实力武器-star法则
hhh程序员的表达能力一直被诟病,尤其面试讲述自己的项目的时候下面的star原则能够帮助你:所谓STAR原则,即Situation(情景)、Task(任务)、Action(行动)和Result(结果)四个英文单词的首字母组合。STAR原则是结构化面试当中非常重要的一个理论。 S指的是situation,中文含义是情景,也就是在面谈中我们要求应聘者描述他在所从事岗位期间曾经做过的某件重要的且可以当作原创 2016-07-25 00:44:38 · 8577 阅读 · 0 评论 -
程序员的软实力武器-smart原则
smart对于程序员来说不是仅仅意味一个法则:面对需求和提出需求时候,smart原则可以极大的提高效率目标管理是使管理者的工作由被动变为主动的一个很好的管理手段,实施目标管理不仅是为了利于员工更加明确高效地工作,更是为了管理者将来对员工实施绩效考核提供了考核目标和考核标准,使考核更加科学化、规范化,更能保证考核的公正、公开与公平。smart的含义:绩效指标必须是具体的(Specific)绩效指标原创 2016-07-25 00:20:48 · 2332 阅读 · 0 评论 -
最大连续子序列和-动态规划
题目描述:给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。注意:最大连续子序列和如果为负,则返回0;而本题目中的最原创 2016-07-17 23:55:33 · 14150 阅读 · 0 评论 -
大厂面试题-回文构造
题目描述:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子:abcda google输出例子:...原创 2016-07-17 22:59:40 · 3847 阅读 · 0 评论 -
LCS问题(最长公共子序列)-动态规划实现
问题描述:问题】 求两字符序列的最长公共字符子序列注意:并不要求子串(字符串一)的字符必须连续出现在字符串二中。思路分析:最优子结构和重叠子问题的性质都具有,所以要采取动态规划的算法最长公共子序列的结构设序列X=x1, x2, …, xm和Y=y1, y2, …, yn的一个最长公共子序列Z=z1, z2, …, zk,则:1.若xm=yn,则zk=...原创 2016-07-17 22:25:23 · 3498 阅读 · 0 评论 -
动态规划算法详解
动态规划的介绍动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。基本思想及其与分治法的区别:将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解(这部分与分治法相似)。与分治法不同的是,适合于用动态规划求解的问题,经...原创 2016-07-17 17:12:38 · 5042 阅读 · 2 评论 -
Spring mvc整合freemarker详解
1.什么是FreeMarkerFreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) 2.FreeMarker...原创 2016-07-13 22:12:25 · 25861 阅读 · 1 评论