Java教程!2019年最新BATJ大厂面试题汇总新鲜出炉!
Posted 程序员超时空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java教程!2019年最新BATJ大厂面试题汇总新鲜出炉!相关的知识,希望对你有一定的参考价值。
struct node* next;
node(int d):data(d), next(NULL){
}
}
node;
void reverse(node* head)
{
if(NULL == head || NULL == head->next){
return;
}
node* prev=NULL;
node* pcur=head->next;
node* next;
while(pcur!=NULL){
if(pcur->next==NULL){
pcur->next=prev;
break;
}
next=pcur->next;
pcur->next=prev;
prev=pcur;
pcur=next;
}
head->next=pcur;
node*tmp=head->next;
while(tmp!=NULL){
cout<data<<“t”;
tmp=tmp->next;
}
}
####1.1.2 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位
**出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家**
**参考答案:**
* **考察点**
1、基础算法的灵活应用能力(二分法学过数据结构的同学都知道,但不一定往这个方向考虑;如果学过数值计算的同学,应该还要能想到牛顿迭代法并解释清楚)
2、退出条件设计
* **解决办法**
1. 已知sqrt(2)约等于 1.414,那么就可以在(1.4,1.5)区间做二分
查找,如:a)high=>1.5 b) low=>1.4 c) mid => (high+low)/2=1.45 d) 1.45*1.45>2 ?high=>1.45 : low => 1.45 e) 循环到 c)
2. 退出条件
a) 前后两次的差值的绝对值<=0.0000000001, 则可退出
const double EPSINON = 0.0000000001;
double sqrt2( ){
double low = 1.4, high = 1.5;
double mid = (low + high) / 2;
while (high - low > EPSINON){
if (mid*mid > 2){
high = mid;
}
else{
low = mid;
}
mid = (high + low) / 2;
}
return mid;
}
####1.1.3 给定一个二叉搜索树(BST),找到树中第 K 小的节点
**出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家**
**参考答案:**
* **考察点**
1、基础数据结构的理解和编码能力
2、递归使用
* **示例**
5
/ \\
3 6
/ \\
2 4
/
1
*说明:保证输入的 K 满足 1<=K<=(节点数目)*
树相关的题目,第一眼就想到递归求解,左右子树分别遍历。联想到二叉搜索树的性质,root 大于左子树,小于右子树,如果左子树的节点数目等于 K-1,那么 root 就是结果,否则如果左子树节点数目小于 K-1,那么结果必然在右子树,否则就在左子树。因此在搜索的时候同时返回节点数目,跟 K 做对比,就能得出结果了。
/**
- Definition for a binary tree node.
**/
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
private class ResultType {
boolean found; //是否找到
int val; //节点数目
ResultType(boolean found, int val) {
this.found = found;
this.val = val;
}
}
public int kthSmallest(TreeNode root, int k) {
return kthSmallestHelper(root, k).val;
}
private ResultType kthSmallestHelper(TreeNode root, int k) {
if (root == null) {
return new ResultType(false, 0);
}
ResultType left = kthSmallestHelper(root.left, k);
//左子树找到,直接返回
if (left.found) {
return new ResultType(true, left.val);
}
//左子树的节点数目 = K-1,结果为 root的值
if (k - left.val == 1) {
return new ResultType(true, root.val);
}
//右子树寻找
ResultType right = kthSmallestHelper(root.right, k - left.val - 1);
if (right.found) {
return new ResultType(true, right.val);
}
//没找到,返回节点总数
return new ResultType(false, left.val + 1 + right.val);
}
}
# 最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以免费送给我的读者朋友们
**目录:**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/634b8798a0ee6ee30c04438aebf60743.png)
Java面试核心知识点
**一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间![有需要的朋友戳这里即可免费获取](https://gitee.com/vip204888/java-p7)**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/52f1b74587f3cfcf57fea9c541660f4c.png)
Java面试核心知识点
**已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了,各位读者朋友们快来免费获取吧**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/0a6b20fbd5cdf0e81fff8db82ebb89b7.png)
p204888/java-p7)**
[外链图片转存中...(img-8ABujcN3-1628135528981)]
Java面试核心知识点
**已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了,各位读者朋友们快来免费获取吧**
[外链图片转存中...(img-RBFg8xZc-1628135528982)]
以上是关于Java教程!2019年最新BATJ大厂面试题汇总新鲜出炉!的主要内容,如果未能解决你的问题,请参考以下文章
提问率高达 98%!近期 BATJ 大厂 Java 岗高频面试题~
总结近期 BATJ 大厂 Java 岗高频面试题,提问率高达 98%
2021年BATJ30套大厂Android经典高频面试题,全网疯传
2021年BATJ30套大厂Android经典高频面试题,使用指南