俗话说,对于程序员来讲,每年都应该出去面试一下,看看自己的技术能力在外面处于什么水平.程序员在一个公司一个环境一个业务干得太久,很容易丧失学习的动力,获得的仅仅是从新手到熟手.当然,我相信在各行各业均是如此.但是,恰好,计算机的技术层出不穷,每年都有新的框架新的技术出现,甚至会要求程序员在一个项目中立刻上马一个全新的技术. <剑指Offer>这本书的作者来自于微软,书中第1章主要介绍面试的常见流程,以及在简历的准备以及面试过程中的一些软技能.后面6个章节则介绍了面试时所具备的一些硬技能,也就是…
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword <[好书推荐]<剑指Offer>之软技能> <[好书推荐]<剑指Offer>之硬技能(编程题1~6)> <[好书推荐]<剑指Offer>之硬技能(编程题7~11)> 持续更新,敬请关注公众号:coderbuff,回复关键字“sword”获取相关电子书. 12.…
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword <[好书推荐]<剑指Offer>之软技能> <[好书推荐]<剑指Offer>之硬技能(编程题1~6)> 持续更新,敬请关注公众号:coderbuff,回复关键字“sword”获取相关电子书. 7.重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.例如:输入前序…
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword 前一篇<[好书推荐]<剑指Offer>之软技能>中提到了面试中的一些软技能,简历的如何写等.<剑指Offer>在后面的章节中主要是一些编程题并配以讲解.就算不面试,这些题多做也无妨.可惜的是书中是C++实现,我又重新用Java实现了一遍,如果有错误或者更好的解法,欢迎提出交流. 1.赋值运算符函…
各位程序猿:         <剑指Offer>一书源自该书作者何海涛坚持更新与编写的博客(http://zhedahht.blog.163.com/),该博客收集整理了大量如微软.Google等知名IT企业的经典面试题.<剑指Offer>一书在此基础上选取了50个典型的程序员面试题,从基础知识.代码质量.解题思路.优化效率和综合能力五个方面系统整理了影响面试的5个要点,难度适中,讲解清晰,非常适合程序猿用于准备求职面试. 目前国内外越来越多公司将在线机试的方式引入求职招聘中,或者…
从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未来去哪里,即将如何发展还没有清晰的规划.迷茫总是会有的,但这并不是停止脚步的理由.找工作是在漫长的职业生涯中时常出现的转折点,而学习和和积累是终生的任务.这里不打算对这一段时间的各项细节和收获展开太多讨论,后续将会专门进行整理. 本文主要是对<剑指 offer>这本面试经典进行一个小结,也是未来继…
剑指Offer--"你最大的缺点是什么"回答技巧及范例   问题分析:认识自己的缺点是一个巨大的优点, 当HR问到你缺点的时候, 你的机会来了, 请快展示你的自知之明吧!你想把优点故意包装成缺点?   比方说把"对工作负责"这个优点伪装成"对自己和他人要求过高?"面试官会不屑一顾地批注:这是我五年前玩剩下的把戏,此人土冒之极.   你想完全实话实说: 应聘会计的人说自己粗心?应聘销售的人说自己容易紧张?面试官会无限惋惜地批注:此人心眼好, 老实,…
零散的思绪.另外,推荐<剑指offer>.本文初期大部分思考都从剑指引发. 面试题不单单只是用来面试.其中有很多编程的经验可以学习.就如同我们当年的考试:) 1:鲁棒性的一个方面:边界条件和异常处理. 1,鲁棒性:robust的中文音译.本身就是健全性. 2,面试中,经常出现一些简单的代码.考验的就是一个程序员对边界条件和异常处理的考虑. 例如:字符串转化为整数.本身题目非常简单.但,我们应该能够考虑到异常输入有:英文/未知符号,负数,空指针,超大数值. 另外,需要明确题目.如果面试官的要求是…
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public boolean Find(int target, int [][] array) { if(array == null||array.length==0) return false; int rowIdx = 0,colIdx = array[0]…
剑指Offer--企业级项目中分层的含义与依据及多态的优势   关于以上两点,由于项目经验较少,自己不是很明白,特整理如下. 常见分层架构模式 三层架构 3-tier architecture   微软.net 体系推荐的分层结构,因此早期在ASP编码的系统中被广泛应用,同时也被其他语言广泛借鉴. 表现层, Presentation layer(PL)   主要负责数据的输入接口和输出.输入指在WEB.客户端或为外界提供的API的数据请求接口:输出则是Web界面.客户端输出.API的数据输出.页…
剑指Offer--知识点储备-JVM基础 1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器.(每个线程都会在程序计数器中存储其指令,从而实现线程切换后恢复到正确的执行位置) (2)虚拟机栈(就是常说的栈,线程私有) 每个方法执行(开始到结束就是这个方法的生命周期)都会创建一个栈帧,栈帧存储局部变量表.操作数栈.动态链接.方法出口等信息. 1)(栈内存)为虚拟机执行java方法服务:方法被…
剑指Offer--完美+今日头条笔试题+知识点总结 情景回顾 时间:2016.9.28 16:00-18:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:完美世界笔试 今日头条笔试   今日头条的两道编程题均涉及到大数据量的处理.按照一般方法解题只能够通过30%-40%.而大数据量的处理也正是自己的软肋.   涉及到的知识点如下,仅供参考. 线程中sleep与wait的区别 1.这两个方法来自不同的类分别是Thread和Object,在java.lang.Thre…
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间.当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃!   总体来说,的题目不算太难.尤其是编程题,思路很清晰,不涉及到太复杂的算法.只有第三题可能涉及到递归操作(软肋).其中第二题有关完全二叉树的操作,只需要知道完全二叉树的四个重要性…
剑指Offer--滴滴笔试题+知识点总结 情景回顾 时间:2016.9.18 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事件:滴滴笔试   总体来说,滴滴笔试内容体量不算多,主要分为19道选择题.1道多选题,2道编程题.1道简答题(也不简单). 选择题   考查知识点:二叉树某层中节点个数(2i-1).费波纳茨数列应用(上9级台阶的方法-分1步.2步).Linux下文件软.硬链接.还有各种计算题(10个人握手,每个人都握一遍,总共握了多少次?12个黑球,个白球,数到13…
剑指Offer--银行网申内容模版 年获得"优秀共青团员"称号 2013.12 科技标兵 2013.10 三好学生 2013.10 "三下乡"优秀学生 2013.05 "蓝桥杯"全国软件专业人才设计与创业大赛山东赛区二等奖 2013.05 "挑战杯"校三等奖 2012.12 学习标兵 2012.12 科技标兵 2012.12 宣传报道先进个人 2011-2012 连续2年全国大学生英语竞赛优秀奖 2012.05 优秀学生记者…
剑指Offer--银行考试 网申简历 一. 银行网申简历主要看哪些方面? 1.职业形象(30%),基本体现为证件照: 2.学校+成绩+校内表现(40%),体现为证书,成绩排名以及任职经历等: 3.校外实践(20%),主要体现在工作实习.实践活动和培训经历三点: 4.其他(10%),根据简历的完整性.准确性,进行综合评定. 二.网申简历应注意哪些方面? 1.考虑银行人的思维习惯(考虑岗位匹配度) 例:申请职位为柜员时,就应该在简历中体现出热情.乐于帮助他人.沉稳细心.认真大方,具有服务意识且对数字…
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 题目分析 首先一开始我们分析得到最小值肯定要比较嘛,和栈里面的数据一一比较,但是栈这种数据结构,你又只能和栈顶弹出来的数据进行比较,所以肯定需要一个临时栈嘛,当然这只是一种思路,就是其余的操作pop,push这些和栈的操作一样,只是min的时候借助下临时栈将原来栈弹出来的保存下,以便放回去. 另外一种思路,也就是剑指offer里面推荐的思路就是增加了一个辅助栈,每次压入数据栈时,把当前栈里面最小的值压入辅助栈当中.…
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 这里尤其需要注意2点:1.所有组合不能重复,比如输入"aa",  那么输出的结果应当是“aa” : 2. 输出结果按字典序排序 如果用<剑指offer>上的方法,显然这两点都不能满足,比如输入"ab…
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次. 解法一:不考虑时间效率的解法(略) ps:我感觉是个程序员都能想到这第一种解法,时间复杂度O(nlogn).这个方法没有什么意义,但是简单易懂,去小公司足够了,这里不讲了. 解法二:分析数字规律,时间复杂度O(logn). 这是我写这篇文章的初衷.<剑指offer>洋洋洒洒写了几十行代码,然而在leetcode上大神却只用了5行!当天晚…
36.两个链表的第一个公共节点 题目描述 输入两个链表,找出它们的第一个公共结点. 1.具有重合节点的两个链表是一个Y字性,用两个堆栈放这两个链表,从尾部开始遍历,直到遍历到最后一个重合节点. 这种算法时间复杂度为O(m+n),但是空间复杂度也是O(m+n),相当于是空间换时间 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ import jav…
本篇延续上一篇,介绍<剑指offer>第二版中的四个题目:从尾到头打印链表.用两个栈实现队列.旋转数组的最小数字.二进制中1的个数. 5.从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值.        链表节点定义的类如下:        解答:这里提供两种方式:用栈和递归.        第一种方式,用栈.因为单向链表一般在表头插入一个新元素,最早插入的会在链表表尾,新插入的会在链表表头.如果是从头到尾(正向)打印一个链表会很容易,直接从头结点开始一步步往表尾…
本篇介绍<剑指offer>第二版中的四个题目:找出数组中重复的数字.二维数组中的查找.替换字符串中的空格.计算斐波那契数列第n项. 这些题目并非严格按照书中的顺序展示的,而是按自己学习的顺序,每个题目包含了分析和代码,代码都是用Java语言编写的. 1.找出数组中重复的数字 题目:        在一个长度为n的数组里,所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复,也不知道每个数字重复了几次,请找出数组中任意一个重复的数字.例如,如果输入长度为7的数组{2,3…
面试10题: 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1)+f(n-2) 解题代码一:基于循环(推荐) 代码如下: # -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here small=0 big=1 if n<=0: return 0 if n==1:…
面试35题: 题目:复杂链表的复制 题:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路一:“Python作弊法” 解题代码: # -*- coding:utf-8 -*- # class RandomListNode: # def __init__(self, x): # self.label = x # self.ne…
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题思路 这题解题的关键在于数据是有序的,很自然的便想到使用二分法:在提交后在评论区发现了更优的解法(除了数据有序外,利用了数据按矩阵形式排列这一特点),会在下列代码中给出. 在使用二分法时,值得注意的是,不能将二…
剑指Offer 按题号排序 面试题 3:数组中重复的数字 面试题 4:二维数组中的查找 面试题 5:替换空格 面试题 6:从头到尾打印链表 面试题 7:重建二叉树 面试题 8:二叉树的下一个节点 面试题 9:用两个栈实现队列 面试题 10:斐波那契数列 面试题 11:旋转数组中最小数字 面试题 12:矩阵中的路径 面试题 13:机器人的运动范围 面试题 14:剪绳子 面试题 15:二进制中1的个数 面试题 16:数值的整数次方 面试题 17:打印从1到最大的n位数 面试题 18:删除链表中的节点…
来源:剑指offer 这篇主要记录<剑指offer>书籍中的面试题2:实现Singleton模式 使用语言:C# 代码环境:VS2017 总共有5中解法,从前往后依次优化. 结构如下: 前言 这里先给出调用程序的代码 Program.cs class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); //Task.Run(() => //{ // Console…
1 写作计划 最近在看<剑指offer>,发现自己有很多的数据结构与算法的基础知识要复习,<好书一起读(131):让写作更好>中提到用写作倒逼阅读,我很是赞同.所以,计划以<剑指offer>为中心,以记录复习心得目的,写一系列数据结构与算法的文章. 文章结构 文章从概念介绍切入,接着介绍相关的语言细节(以C语言和Python为主),最后以<剑指offer>中的编程题做结. 2 什么是数组 一提到数组,我第一时间经典的C语言实现和与之对应的一片定长连续的内存空…
LeetCode过程中值得反思的细节 以下题号均指LeetCode剑指offer题库中的题号 本文章将每周定期更新,当内容达到10题左右时将会开下一节. 二维数组越界问题04 public static void main(String[] args) { int[][]x = {{}}; System.out.println(x.length+" "+x[0].length); int[][]y = {{1}}; System.out.println(y.length+"…
剑指 Offer 31. 栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列. 示例 1: 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行: push(…