扬帆起航,再踏征程(一)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53525075 冷血之心的博客)
数据结构与算法:
1、以最少的代码实现单链表反转,需要自己创建节点。
/** 翻转链表(遍历) * 从头到尾遍历原链表,每遍历一个结点,* 将其摘下放在新链表的最前端。* 注意链表为空和只有一个结点的情况。时间复杂度为O(n)*/public static Node reverseNode(Node head){// 如果链表为空或只有一个节点,无需反转,直接返回原链表表头if(head == null || head.next == null)return head;Node reHead = null;Node cur = head;while(cur!=null){Node reCur = cur; // 用reCur保存住对要处理节点的引用cur = cur.next; // cur更新到下一个节点reCur.next = reHead; // 更新要处理节点的next引用reHead = reCur; // reHead指向要处理节点的前一个节点}return reHead;}// 翻转递归(递归) // 递归的精髓在于你就默认reverseListRec已经成功帮你解决了子问题了!但别去想如何解决的 // 现在只要处理当前node和子问题之间的关系。最后就能圆满解决整个问题。 /*head1 -> 2 -> 3 -> 4head1--------------|4 -> 3 -> 2 // Node reHead = reverseListRec(head.next);reHead head.next4 -> 3 -> 2 -> 1 // head.next.next = head;reHead4 -> 3 -> 2 -> 1 -> null // head.next = null;reHead*/ public static Node reverseNodeRec(Node head){ if(head == null || head.next == null){ return head; } Node reHead = reverseNodeRec(head.next); head.next.next = head; // 把head接在reHead串的最后一个后面 head.next = null; // 防止循环链表 return reHead; }
2、给出一个二叉树,不能使用递归的方式,以二叉树的高度输出每个节点的值。在此基础上,如何在每个高度结束之后,输入一个换行符?
/***********************************************************************4.分层遍历二叉树(按层次从上往下,从左往右): levelTraversal **********************************************************************//** * 分层遍历二叉树(按层次从上往下,从左往右)迭代 * 相当于广度优先搜索,使用队列实现。队列初始化,将根节点压入队列。当队列不为空,进行如下操作:弹出一个节点 * ,访问,若左子节点或右子节点不为空,将其压入队列 */ public static void levelTraversal(TreeNode root){if(root==null)return ;LinkedList<TreeNode> queue = new LinkedList<TreeNode>();queue.add(root);while(!queue.isEmpty()){TreeNode cur = queue.remove();System.out.print(cur.val+" ");if(cur.left!=null)queue.add(cur.left);if(cur.right!=null)queue.add(cur.right);}}/*** 分层遍历二叉树,并且实现在每个高度结束之后,输入一个换行符* @param root*/public static void levelTraversal2(TreeNode root){if(root==null)return ;Queue<TreeNode> queue = new LinkedList<TreeNode>();TreeNode cur = root;queue.add(cur);int currentLevelNodeNums = 1;int nextLevelNodeNums = 0;while(!queue.isEmpty()){TreeNode reCur = queue.remove();System.out.print(reCur.val+" ");currentLevelNodeNums--;if(reCur.left!=null){queue.add(reCur.left);nextLevelNodeNums++;}if(reCur.right!=null){queue.add(reCur.right);nextLevelNodeNums++;}if(currentLevelNodeNums==0){System.out.println();currentLevelNodeNums = nextLevelNodeNums;nextLevelNodeNums = 0;}}}
数据库:
1、MongoDB数据库的优缺点分析?
答:MongoDB是面向文档的数据库,mysql是传统的关系型数据库。
优点:保证访问速度,访问时数据库不会被锁死;
文档结构的存储方式,数据存储在一个文档中,更利于管理,能够更便捷的获取数据;
使用JSON风格语法,相对于SQL来说,更加直观,容易理解和掌握;
性能优越,访问速度快。
缺点:不支持事务操作,空间占用大。
2、SQL语句中查询每个年龄有几个用户。
select count(*)from table group by age
3、MySQL中两种表类型MyISAM和InnoDB的区别?
- MyISAM不支持事务,InnoDB是事务类型的存储引擎
- MyISAM只支持表级锁,BDB支持页级锁和表级锁,默认为页级锁;而InnoDB支持行级锁和表级锁,默认为行级锁
- MyISAM引擎不支持外键,InnoDB支持外键
- MyISAM引擎的表在大量高并发的读写下会经常出现表损坏的情况
- 对于count( )查询来说MyISAM更有优势
- InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的
- MyISAM支持全文索引(FULLTEXT),InnoDB不支持
- MyISAM引擎的表的查询、更新、插入的效率要比InnoDB高
最主要的区别是:MyISAM表不支持事务、不支持行级锁、不支持外键。
InnoDB表支持事务、支持行级锁、支持外键。
排序:
1、将一个数组排序输出。
答:关于排序算法,参考本博客:
“深入理解”—选择排序算法
“深入理解”—交换排序算法
“深入理解”—插入排序算法
git:
1、切换分支命令?
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/BrentHuang/MyRepo.git
git push -u origin master
在本地新建一个分支: git branch Branch1
切换到你的新分支: git checkout Branch1
将新分支发布在github上: git push origin Branch1
在本地删除一个分支: git branch -d Branch1
在github远程端删除一个分支: git push origin :Branch1 (分支名前的冒号代表删除)
直接使用git pull和git push的设置
1、说说Spring的核心思想。解释IOC和AOP
答:Spring框架的核心就是IOC(控制反转)和AOP(面向切面编程)
IOC:将对象间的依赖关系交给Spring容器,使用配置文件来创建所依赖的对象。
AOP:使用配置文件创建所依赖的对象后,如果你要调用该对象的方法,并且想要在方法前/后 做一些处理,如:日志记录,性能统
计,安全控制,事务处理,异常处理等。则可以利用AOP实现。
即面向切面编程将功能代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑
的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
Hibernate:
1、Hibernate有几级缓冲?分别是什么?有什么区别?
答:分为一级缓存(事务缓存)和二级缓存(应用缓存)。一级缓存是session对象的缓存,二级缓存是一个可插拔的缓存插件,由SessionFactory控制。
区别:
默认方式不同:一级缓存是内置的,不可卸载(默认是打开的);二级缓存是可插拔的(默认关闭)
作用范围不同:一级缓存是事务范围的缓存;二级缓存是进程范围或群集范围的缓存
适合存放的数据不同:二级缓存中适合存放很少被修改的数据、不是很重要的数据,允许偶尔出现并发问题的数据。
Struts2:
1、说说Struts2中接收请求后都发生了什么?
项目:
哪个项目做得最好?
答:你猜
如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以加群366533258交流讨论哈~
扬帆起航,再踏征程(一)相关推荐
- 扬帆起航,再踏征程(三)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53588062 冷血之心的博客) 题目1: 找到第一次出差错的版本 ...
- 扬帆起航,再踏征程(四)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53612643 冷血之心的博客) 1.SpringMVC是如何处理用 ...
- 九万里风鹏正举,扬帆起航,踏上新征程
毕业后就从事了现在这份工作,算一算已经10多年了.日常工作内容包括软件开发.系统维护.网络搭建.软件平台应用等,算是专业对口,平时空闲时间也比较多.人已近中年,却还有一颗躁动不安的心,始终想在技术上再 ...
- 对学校的希望和寄语_南中医举行2020年开学典礼,校长胡刚寄语“后浪”:乘风破浪,扬帆起航...
现代快报讯(通讯员 刘丹青 记者 仲茜)"钟山脚下.扬子江畔,杏林学子济济一堂.青春风华.意气轩昂,满园桃李竟芬芳."9月17日,南京中医药大学举行2020级新生开学典礼.为了让每 ...
- 正宇控股集团丨正宇,扬帆起航
你是一颗耀眼璀璨的明珠 你是一艘承载理想的航母 你是生命奇迹的见证 你是诠释爱心的净土 大千世界茫茫人海 是你把我们相拥在一起 都市繁华乡间小路 是你激励我们前进的脚步 只要我们追求梦想 绽放五彩斑斓 ...
- 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...
- 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下
引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...
- 在哪下载扬帆起航个人简历Word模板
很多刚刚毕业的大学生,即将开始自己新的旅途.他们就要扬帆起航,为了自己的未来而努力.奋斗.对于他们来说,离开学习步入社会,首先要做得就是找到份自己喜欢的工作.而在找工作的过程中就需要面试,面试就需要大 ...
- 临沧农业学校计算机,放飞梦想,扬帆起航!
放飞梦想,扬帆起航! 开学啦!!! 丹桂飘香正八月,又到一年迎新时!! 2018年8月26日上午,临沧市农业学校迎来了2018级新一届学生.一大早,来自四面八方的莘莘学子便怀揣着梦想与憧憬,陆续走进我 ...
最新文章
- DT技术助力企业创新转型
- gtkpod 0.99.8
- 《动手玩转Arduino》——2.4 展望
- 如何用SAP Cloud for Customer的手机App创建销售订单
- 廉价raid_如何查找80行代码中的廉价航班
- 550什么意思_研报翻译官第二期:带你了解什么是CPI
- 在云服务器搭建WordPress博客(六)发布和管理文章
- win10怎么更改账户名称_Win10邮件功能如何查看邮件
- Python深入-Python的内存管理
- 03-搭建Eureka注册中心和服务端
- 再见 2017 你好 2018 ,程序员们的精彩年度总结
- 插入图像标签(HTML)
- 【每日算法Day 81】面试经典题:关于丑数,你真的理解为什么这么算吗?
- Ext.js入门:TabPanel组件(八)
- Git常用指令的使用
- 仿淘手游交易平台网站源码
- 基于SSM的课设管理小程序源码(课程设计源码)
- uni-app - MUMU模拟器模拟 iPad 尺寸开发(分辨率及DPI调整)
- 12306火车票余票自动查询 Python selenium
- docker容器内启动mysql服务,报错:New main PID 99 does not belong to service, and PID file is not owned by root.