There are many styles of nonparametric bootstrap.
For a random sample of size $n$ from a population with mean $\mu$
the principle of the bootstrap is to regard the empirical CDF
of the data as an estimate of the population CDF.
One takes a large number $B$ of re-samples of size $n$ from the data x
with replacement and finds the mean of each re-sample.
A very simple bootstrap takes quantiles .025 and .975 of these
re-sampled means as a 95% confidence interval for $\mu.$
All we know about the population is that it is capable of
producing the $n=15$ observations in our sample, so we
re-sample from them. [Re-sampling without replacement would
make no sense, because a re-sample without replacement
gives just the same sample again--likely re-arranged, but with
exactly the same $n$ values.]
Example: Data in vector x
in R.
summary(x); sd(x); length(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.1139 3.4503 7.3113 6.1035 7.8384 11.0812
[1] 3.189805
[1] 15
stripchart(x)

Because the sample shows no distinct skewness, it is OK
to use a simple quantile bootstrap procedure without bias correction
as shown below, obtaining the 95% nonparametric bootstrap
CI $(4.46, 7.60).$
set.seed(2020)
B = 3000; n = length(x)
a.re = replicate(B, mean(sample(x, n, rep=T)))
CI = quantile(a.re, c(.025,.975)); CI
2.5% 97.5%
4.459446 7.597443
Here is a histogram of the $B = 3000$ re-sampled averages,
with vertical red lines indicating the quantiles used to
make the bootstrap.
hist(a.re, prob=T, col="skyblue2")
abline(v = CI, col="red")

By contrast, here is a parametric 95% t confidence interval
$(4.34, 7.87),$
which assumes that the data are normal.
t.test(x)$conf.int
[1] 4.336995 7.869906
attr(,"conf.level")
[1] 0.95
A direct comparison of the two CIs is unwarranted. The bootstrap
CI assumes only that the data were randomly sampled from some
population with mean $\mu.$ The t CI assumes random sampling
from a normal population.
Note: In this case, $n=15$ observations were randomly sampled from $\mathsf{Unif}(0,12)$
so that $\mu = 6.$
set.seed(1234)
x = runif(15, 0,12)